NO.20 有效括号 简单
思路一:栈 学校的数据结构课就是那这个作为例子来引入栈结构的。1. 遍历表达式中每个字符,如果是’(‘或’[]’或’{‘就放入栈中。2. 如果是’)’或’]’或’}’就弹出栈顶字符top,如果此时栈为空或者将此时被遍历字符和top不匹配,则说明表达式无效。3. 遍历完所有字符,检查栈是否为空,如果不为空则表达式无效,反之有效。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| public boolean isValid(String s) { if (s==null||s.equals(""))return true;
HashMap<Character,Character> map=new HashMap<>(); map.put(')','('); map.put(']','['); map.put('}','{');
Stack<Character> stack=new Stack<>(); for (int i=0;i<s.length();i++){ char c = s.charAt(i);
if (!map.containsKey(c)){ stack.push(c); }else {
if (stack.size()==0)return false;
Character top = stack.pop();
if (map.get(c)!=top)return false; } }
return stack.isEmpty(); }
|
时间复杂度:O(n)
本人菜鸟,有错误请告知,感激不尽!
更多题解和学习记录博客:博客、github