给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
输入: "()"
输出: true
输入: "(]"
输出: false
输入: "{[]}"
输出: true
思路:
设置一个map存放括号
private HashMap<Character,Character> mappings = new HashMap<>();
mappings.put(')','(');
mappings.put('}','{');
mappings.put(']','[');
把所有左括号进栈,当遇到右括号的时候,出栈一个左括号,
如果不匹配,就直接false,最后遍历完之后,判断栈空不空,如果不空,false。
for (int i=0;i<s.length();i++){
if (mappings.containsKey(s.charAt(i))){
char pop = stack.isEmpty()?'#':stack.pop();
if (pop != mappings.get(s.charAt(i))){
return false;
}
}else {
stack.push(s.charAt(i));
}
}
return stack.isEmpty();
}
网友评论