LeetCode第20题 有效的括号
Posted _colorful
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode第20题 有效的括号相关的知识,希望对你有一定的参考价值。
*
给定一个只包括 ‘(‘,‘)‘,‘{‘,‘}‘,‘[‘,‘]‘ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
1 class Solution20 { 2 3 public boolean isValid(String s) { 4 if (s == null) { 5 return false; 6 } 7 Stack<Character> stack = new Stack<>(); 8 for (int i = 0; i < s.length(); i++) { 9 char ch = s.charAt(i); 10 if (ch == ‘[‘ || ch == ‘{‘ || ch == ‘(‘) { 11 stack.push(ch); 12 } else { 13 if (stack.isEmpty()) { 14 return false; 15 } 16 switch (ch) { 17 case ‘)‘: 18 if (stack.peek() == ‘(‘) { 19 stack.pop(); 20 break; 21 } else { 22 return false; 23 } 24 case ‘}‘: 25 if (stack.peek() == ‘{‘) { 26 stack.pop(); 27 break; 28 } else { 29 return false; 30 } 31 case ‘]‘: 32 if (stack.peek() == ‘[‘) { 33 stack.pop(); 34 } else { 35 return false; 36 } 37 } 38 } 39 } 40 return stack.isEmpty(); 41 } 42 }
注意空字符串可被认为是有效字符串。
*/
/*
思路: 时间复杂度O(n)
将左括号放入栈中,如果是右括号,判断当前栈顶元素是否和当前有括号类型一致。
每有一个有括号与栈顶左括号匹配,就将左括号弹出。
栈为空表示每一个右括号都匹配到了左括号,当然如果栈中没有任何左括号却出现了右括号,直接返回false就可以。
*/
以上是关于LeetCode第20题 有效的括号的主要内容,如果未能解决你的问题,请参考以下文章