题目
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.
思路
设计一个栈数据结构,每当遇到左括号时候压入栈,遇到有括号时候判断栈顶元素是不是一个与之匹配的左括号,如果是则出站,如果否则返回FALSE;最后若栈为空则返回TRUE,否则返回FALSE。
代码
public class Solution {
public boolean isValid(String s) {
char [] stack = new char[10000];
int top = -1;
if(s.charAt(0) == '}' || s.charAt(0) == ']' || s.charAt(0) == ')' ) return false;
int i = 0;
while(i < s.length()){
char c = s.charAt(i);
if(c == '{' || c == '[' || c == '('){
++top;
stack[top] = c;
}
else{
if(top < 0) return false;
char t = stack[top];
if(t == '{' && c == '}'){
--top;
}
else if(t == '[' && c == ']'){
--top;
}
else if(t == '(' && c == ')'){
--top;
}
else{
return false;
}
}
++i;
}
if(top == -1) return true;
else return false;
}
}