题目
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例
输入: “()”
输出: true
输入: “()[]{}”
输出: true
输入: “(]”
输出: false
输入: “([)]”
输出: false
输入: “{[]}”
输出: true
这是一道简单题,没什么说的
class Solution {
public boolean isValid(String s) {
//key是闭括号原因是,待会for的时候遇到是闭括号的时候,需要把对应的开括号拿出来和栈顶进行比较
if(s==null||s.equals("")){
return true;
}
Map<Character,Character>map = new HashMap<>();
map.put(')','(');
map.put(']','[');
map.put('}','{');
Stack<Character>stack = new Stack<>();
for(Character c : s.toCharArray()){
if(map.containsKey(c)){
Character top = stack.isEmpty() ? '#' : stack.pop();
if(!top.equals(map.get(c))){
return false;
}
}else{
stack.push(c);
}
}
return stack.isEmpty();
}
}
举一反三
无