LeetCode 刷题记录
题目:Valid Parentheses
难度:easy
使用语言:java
英语描述:
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.
中文描述:
由于只包含字符的字符串'(',')','{','}','['和']',确定输入字符串是有效的。
括号必须关闭以正确的顺序,"()"并且"()[]{}"都是有效的,但"(]"并"([)]"没有。
代码:
class Solution { public boolean isValid(String s) { if(s.length()==0||s.length()==1) return false; //加入一个标记,若栈加入元素,则+1,否则-1 int flag =0 ; char[] ch = s.toCharArray(); Stack<Character> stack = new Stack<Character>(); for(char c:ch){ //如果当前字符为'{','{','[' if(c=='{'||c=='('||c=='[') { flag++; stack.push(c); } //如果当前字符不是'{','{','[' else{ //如果stack为空,返回false if(stack.empty()) return false; //取出栈顶元素,小心报错,会有栈为空的错误 char temp = stack.pop(); //依次进行判断,如果符合条件标记-1,不符合返回false if(temp=='{') { if(c!='}') return false; flag--; } else if(temp=='(') { if(c!=')') return false; flag--; } else if(temp=='[') { if(c!=']') return false; flag--; } } } //判断栈为空或者flag是否为0 if(stack.empty()&&flag==0) return true; else return false; } }
浙公网安备 33010602011771号