一,题目
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.
二,思路
1,遇到([{入栈
2,每次遇到) [ }判断栈顶是否能与其匹配,如果可以,栈顶出栈,否则返回true
3,遍历完毕如果栈不为空返回false,否则true
三,代码
public boolean isValid(String s) {
if(s == null || s.length() == 0){
return true;
}
int len = s.length();
if(len %2 != 0){
return false;
}
Stack<Character> stack = new Stack<Character>();
for(int i=0; i < len; i++){
char ch = s.charAt(i);
if('(' == ch){
stack.push(ch);
}else if('[' == ch){
stack.push(ch);
}else if('{' == ch){
stack.push(ch);
}else if(')' == ch){
if(stack.size() > 0 && stack.peek() == '('){
stack.pop();
}else{
return false;
}
}else if(']' == ch){
if(stack.size() > 0 && stack.peek() == '['){
stack.pop();
}else{
return false;
}
}else if('}' == ch){
if(stack.size() > 0 && stack.peek() == '{'){
stack.pop();
}else{
return false;
}
}
}
return stack.isEmpty();
}
272

被折叠的 条评论
为什么被折叠?



