有效的括號題解
題目描述
給定一個只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判斷字符串是否有效。
有效字符串需滿足:
- 左括號必須用相同類型的右括號閉合。
- 左括號必須以正確的順序閉合。
- 注意空字符串可被認爲是有效字符串。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/valid-parentheses
解題思路
用一個輔助棧來存儲括號,每當遍歷到的括號爲反括號的時候,將棧頂括號彈出看是否與反括號匹配,如果匹配就消除這兩個括號。不匹配則直接返回false
。同時每次遍歷到反括號也要看看棧中元素是否爲空,爲空和不匹配一樣返回false
。
代碼實現
class Solution {
//裝括號的棧
Stack<Character> stack = new Stack<>();
public boolean isValid(String s) {
char[] chars = s.toCharArray();
for (int i = 0; i < chars.length; i++) {
if(chars[i] == ')' && !stack.isEmpty()){
char temp = stack.pop();
if(temp != '('){
return false;
}
}
else if(chars[i] == ']' && !stack.isEmpty()){
char temp = stack.pop();
if(temp != '['){
return false;
}
}else if(chars[i] == '}' && !stack.isEmpty()){
char temp = stack.pop();
if(temp != '{'){
return false;
}
}else {
stack.push(chars[i]);
}
}
return stack.isEmpty()? true : false;
}
}