题意
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
解题思路
使用栈,不匹配入栈,匹配出栈,最后栈为空则字符串有效。
参考代码
class Solution {
public int getType(String s) {
if (s.equals("(")) return -1;
if (s.equals(")")) return 1;
if (s.equals("{")) return -2;
if (s.equals("}")) return 2;
if (s.equals("[")) return -3;
if (s.equals("]")) return 3;
return 0;
}
public boolean isValid(String s) {
Stack<String> st = new Stack<String>();
for (int i=0;i<s.length();i++) {
String tmp = s.substring(i,i+1);
if (st.isEmpty()) st.push(tmp);
else {
String str = st.peek();
if (getType(str)+getType(tmp)==0) st.pop();
else st.push(s.substring(i,i+1));
}
}
if (st.isEmpty()) return true;
return false;
}
}