力扣-20.有效的括号
题目描述
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
class Solution {public boolean isValid(String s) {Stack<Character> st = new Stack<>();for (int i = 0; i < s.length(); i++) {if(s.charAt(i)=='('||s.charAt(i)=='['||s.charAt(i)=='{'){st.push(s.charAt(i));}else {if(st.empty()){return false;}if(s.charAt(i)==')'&&st.pop()=='('||s.charAt(i)==']'&&st.pop()=='['||s.charAt(i)=='}'&&st.pop()=='{'){continue;}else {return false;}}}if(!st.empty()){return false;}return true;}
}
小结:用栈解决思路很清晰,看题解用了哈希表和栈结合,感觉没必要