使用stack
简单一题做的复杂了
public class Solution {
public boolean isValid(String s) {
Stack<Character> st = new Stack<Character>();
int i = 0;
char bracket = '0';
boolean flag = true;
while( i<s.length() && flag == true){
if (s.charAt(i) == '(' || s.charAt(i) == '[' || s.charAt(i) == '{'){
st.push(s.charAt(i));
}
if (s.charAt(i) == ')' || s.charAt(i) == ']' || s.charAt(i) == '}' ){
if(!st.isEmpty()){
bracket = st.pop();
flag = matchMark(bracket,s.charAt(i));
}
else{
flag=false;
}
}
i++;
}
if (!flag) return false;
if (!st.empty()) return false; //if parenthese, all elements pushed in should be pop out
else return true;
//return flag;
}
private boolean matchMark(char c, char d) {
// TODO Auto-generated method stub
if(c == '(' && d == ')') return true;
if(c == '{' && d == '}') return true;
if(c == '[' && d == ']') return true;
else return false;
}
}
本文详细探讨了如何通过使用Stack数据结构简化解决括号匹配问题的代码逻辑,避免了不必要的复杂性,使代码更加清晰易懂。
915

被折叠的 条评论
为什么被折叠?



