1 题目理解
输入:一个字符串s,只包含( ) { } [ ]这六种字符。
输出:字符串是否有效
规则:一个有效的字符串需要括号对应匹配,并且要左括号在前。
举例:
1 输入s="()",输出true
2 Input: s = “()[]{}”
Output: true
3 Input: s = “(]”
Output: false
2思路
这道题目比较简单。用栈记录出现过的左括号,遇到右括号的时候去匹配。不能匹配上就是无效的。
class Solution {public boolean isValid(String s) {Map<Character,Character> map = new HashMap<Character,Character>();map.put(')','(');map.put(']','[');map.put('}','{');Stack<Character> stack = new Stack<Character>();for(int i=0;i<s.length();i++){char ch = s.charAt(i);if(map.get(ch)!=null){if(stack.isEmpty() || stack.peek()!=map.get(ch)){return false;}stack.pop();}else{stack.push(ch);}}return stack.isEmpty();}
}