LeetCode——20. 有效的括號
阿新 • • 發佈:2021-02-06
題目描述:
給定一個只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1:
輸入: “()”
輸出: true
示例 2:
輸入: “()[]{}”
輸出: true
示例 3:
輸入: “(]”
輸出: false
示例 4:
輸入: “([)]”
輸出: false
示例 5:
輸入: “{[]}”
輸出: true
解釋:
對給定的字串 s 進行遍歷,當遇到一個左括號時,在後續的遍歷中,希望有一個相同型別的右括號將其閉合。由於後遇到的左括號要先閉合
注意到有效字串的長度一定為偶數,因此如果字串的長度為奇數,我們可以直接返回False,省去後續的遍歷判斷過程。
程式碼如下:
class Solution {
public boolean isValid(String s) {
int n = s.length();
Stack<Character> stack = new Stack<Character>();
if (n % 2 != 0) {
return false;
}
for (int i = 0; i < n; i++) {
char ch = s.charAt(i);
if (ch == '(') {
stack.push(')');
} else if (ch == '[') {
stack.push(']');
} else if (ch == '{') {
stack.push('}');
} else if (stack.empty() || ch != stack.pop()) {
return false;
}
}
return stack.empty();
}
}
執行結果: