括号匹配问题。
如果只有一种括号,我们完全可以用一个计数器 count ,遍历整个字符串,遇到左括号加 1 ,遇到右括号减 1,遍历结束后,如果 count 等于 0 ,则表示全部匹配。但如果有多种括号,像 ( [ ) ] 这种情况它依旧会得到 0,所以我们需要用其他的方法。
Stack!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| class Solution { public boolean isValid(String s) { Stack<Character> brackets = new Stack<Character>(); for(int i = 0; i < s.length(); i++) { char c = s.charAt(i); switch(c) { case '(': case '{': case '[': brackets.push(c); break; case ')': if(!brackets.empty()) { if(brackets.peek() == '(') { brackets.pop(); } else { return false; } } else { return false; } break; case '}': if(!brackets.empty()) { if(brackets.peek() == '{') { brackets.pop(); } else { return false; } } else { return false; } break; case ']': if(!brackets.empty()) { if(brackets.peek() == '[') { brackets.pop(); } else { return false; } } else { return false; } } } return brackets.empty(); } }
|