# 题目
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()" | |
输出:true |
示例二:
输入:s = "()[]{}" | |
输出:true |
示例 3:
输入:s = "(]"
输出:false
tips:
1 <= s.length <= 10^4^
s
仅由括号'()[]{}'
组成
# 解法一:使用栈
利用栈先进后出的特点。左括号先进去,后比较,
class Solution { | |
public boolean isValid(String s) { | |
int len = s.length(); | |
if(len % 2 == 1) return false; | |
Map<Character, Character> maps = new HashMap<Character, Character>(); | |
maps.put( ')', '('); | |
maps.put( ']', '['); | |
maps.put( '}', '{'); | |
Stack<Character> stack = new Stack(); | |
for(int i = 0; i < len; i++){ | |
char cur =s.charAt(i); | |
if(maps.containsKey(cur)){ | |
if(stack.isEmpty() || stack.peek() != maps.get(cur)){ | |
return false; | |
} | |
stack.pop(); | |
}else{ | |
stack.push(cur); | |
} | |
} | |
return stack.isEmpty(); | |
} | |
} |
看了很多解法,似乎只有栈这种解法