蘭州網(wǎng)站建設(shè)哪家專業(yè)百度網(wǎng)盤app下載安裝
解題思路:
使用棧
只有三種情況
1. ( [ { } ] ( (? ? ? ? ?左括號(hào)多了 -> 最后棧中經(jīng)過抵消會(huì)剩下括號(hào)
2. [ { ( ] } ]? ? ? ? ? ?括號(hào)不匹配 -> return false
3. [ { } ] ( ) ) )? ? ? ?右括號(hào)多了 -> 未遍歷完時(shí),棧提前為空,return false
遇到左括號(hào),在棧中放入對(duì)應(yīng)的右括號(hào)
遇到右括號(hào),取出棧頂元素看是否相等,不相等則返回false
最后檢查棧是否為空,不為空則對(duì)應(yīng)第一種情況,return false
注意:
s 要先調(diào)用 s.toCharArray() 轉(zhuǎn)換為 char[] 類型才可以使用增強(qiáng)型for循環(huán)
class Solution {public boolean isValid(String s) {Deque<Character> stack = new ArrayDeque<>();for (char c : s.toCharArray()) {if (c == '(') stack.push(')');else if (c == '[') stack.push(']');else if (c == '{') stack.push('}');else if (stack.isEmpty() || c != stack.peek()) return false;else stack.pop();}if (stack.isEmpty()) return true;return false;}
}