有效的括号
1.题目
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
2.分析
这题括号的匹配刚好契合数据结构栈先进后出的特性。。所以就当输入为左括号时就入栈,当为右括号时就弹出栈顶元素进行匹配,匹配成功则继续,失败则直接返回false,这里有两个需要注意的地方就是当字符串长度为1时就肯定没效直接返回false,还有当循环结束了栈里面还有字符那说明也没用相应的匹配也返回false;
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| class Solution { public boolean isValid(String s) { Stack<Character> stack = new Stack<>(); int len = s.length(); if(len==1){ return false; }else{ for (int i = 0; i < len; i++) { char ch = s.charAt(i); if(stack.empty()){ stack.push(ch); }else{ if(ch=='('||ch=='['||ch=='{'){ stack.push(ch); }else if(ch==')'){ char temp = stack.pop(); if(temp!='('){ return false; } }else if(ch==']'){ char temp = stack.pop(); if(temp!='['){ return false; } }else if(ch=='}'){ char temp = stack.pop(); if(temp!='{'){ return false; } } } } } if(!stack.empty()){ return false; } return true;
} }
|