前言
仅记录学习笔记,如有错误欢迎指正。
题目
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
示例
-
输入: "{[]}"
-
输出: true
-
输入: "([)]"
-
输出: false
思路
遇到左括号入栈,遇到右括号时将对应栈顶左括号出栈。
解法
public Boolean fun(String s ){
if(s.length()%2!=0 || s.length() == 0){
return false;
}
HashMap<String ,String> map = new HashMap<>();
map.put("(",")");
map.put("[","]");
map.put("{","}");
Stack<Character> stack = new Stack<>();
for(int i = 0;i<s.length();i++){
if(map.containsKey(s.charAt(i)+"")){
stack.push(s.charAt(i));
}else{
if(stack.empty() || !map.get(stack.pop().toString()).equals(s.charAt(i)+"")){
return false;
}
}
}
return true;
}