给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:1左括号必须用相同类型的右括号闭合。2.左括号必须以正确的顺序闭合。//LeetCode20
解决思路:
- 利用栈的特性
- 利用哈希表做映射来解决匹配问题
class Solution {
public boolean isValid(String s) {
if(s.length()%2!=0){
return false;
}
HashMap<Character,Character> map=new HashMap<Character,Character>();
map.put('(',')');
map.put('[',']');
map.put('{','}');
Stack stack=new Stack();
for (int i=0;i<s.length();i++){//遍历字符串,如果等于map的key,证明其是左括号,可以直接压入栈,如果不是,出栈
if (map.containsKey(s.charAt(i))){
stack.push(s.charAt(i));
}else {
stack.pop();
}
}
return stack.isEmpty();
}
}