LeetCode第20题 - 有效的括号

题目

给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

示例 1:

输入: “()”
输出: true
示例 2:

输入: “()[]{}”
输出: true
示例 3:

输入: “(]”
输出: false
示例 4:

输入: “([)]”
输出: false
示例 5:

输入: “{[]}”
输出: true
通过次数291,883提交次数699,868

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解答

class Solution {
   
    public boolean isValid(String s) {
   
    	if (s == null) {
   
    		return true;
    	}

    	s = s.trim();
    	if (s.isEmpty()) {
   
    		return true;
    	}

    	Stack<Character> stack = new Stack<Character>();
    	int length = s.length();
    	for (int i = 0; i < length; ++i) {
   
    		char c = s.charAt(i);
    		char v = 0;
    		switch (c) {
   
			case '(':
				stack.push(c);
				break;
			case ')':
				if (stack.isEmpty()) {
   
					return false;
				}

				v = stack.pop();
				if (v != '(') {
   
					return false;
				}
				break;
			case '[':
				stack.push(c);
				break;
			case ']':
				if (stack.isEmpty()) {
   
					return false;
				}

				v = stack.pop();
				if (v != '[') {
   
					return false;
				}
				break;
			case '{':
				stack.push(c);
				break;
			case '}':
				if (stack.isEmpty()) {
   
					return false;
				}

				v = stack.pop();
				if (v != '{') {
   
					return false;
				}
				break;
			default:
				break;
			}
    	}

    	return stack.isEmpty();
    }
}

要点
直接使用JDK自带的容器Stack,按照题目要求来实现,代码本身不复杂,所以不做过多的解释。

准备的用例,如下

	private Solution t = null;

	@Before
	public void before() {
   
		t = new Solution();
	}

	@Test
	public void test001() {
   
		assertTrue(t.isValid("()"));
	}

	@Test
	public void test002() {
   
		assertTrue(t.isValid("()[]{}"));
	}

	@Test
	public void test003() {
   
		assertFalse(t.isValid("(]"));
	}

	@Test
	public void test004() {
   
		assertFalse(t.isValid("([)]"));
	}

	@Test
	public void test005() {
   
		assertTrue(t.isValid("{[]}"));
	}

相关推荐

  1. LeetCode20 - 有效括号

    2023-12-30 21:14:08       41 阅读
  2. [ LeetCode ] 刷刷(Python)-20有效括号

    2023-12-30 21:14:08       14 阅读
  3. LeetCode98 - 有效括号

    2023-12-30 21:14:08       37 阅读
  4. LeetCode 20. 有效括号

    2023-12-30 21:14:08       37 阅读
  5. Leetcode 20. 有效括号

    2023-12-30 21:14:08       18 阅读
  6. LeetCode 20.有效括号

    2023-12-30 21:14:08       12 阅读
  7. Leetcode 20有效括号

    2023-12-30 21:14:08       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-30 21:14:08       14 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-30 21:14:08       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-30 21:14:08       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-30 21:14:08       18 阅读

热门阅读

  1. 力扣labuladong——一刷day81

    2023-12-30 21:14:08       38 阅读
  2. LeetCode657. Robot Return to Origin

    2023-12-30 21:14:08       32 阅读
  3. mysql 数据查重与查重分页

    2023-12-30 21:14:08       33 阅读
  4. leetcode541. 反转字符串II

    2023-12-30 21:14:08       36 阅读
  5. react入门笔记

    2023-12-30 21:14:08       29 阅读
  6. KSO-SAP ABAP 创建webservice服务,并用soapui测试

    2023-12-30 21:14:08       32 阅读
  7. vue 页面刷新、重置、更新页面所有数据

    2023-12-30 21:14:08       51 阅读
  8. 算法训练营Day25

    2023-12-30 21:14:08       40 阅读
  9. OpenCV-Python(22):直方图均衡化

    2023-12-30 21:14:08       38 阅读
  10. Python实现进度条

    2023-12-30 21:14:08       38 阅读
  11. ARM12.26

    ARM12.26

    2023-12-30 21:14:08      33 阅读
  12. 项目中cesium使用方法

    2023-12-30 21:14:08       33 阅读
  13. 四、KMDF开发之traceview跟踪打印信息

    2023-12-30 21:14:08       37 阅读
  14. 【Yii2】数据库查询方法总结

    2023-12-30 21:14:08       40 阅读