- Total Accepted: 189650
- Total Submissions: 576679
- Difficulty: Easy
- Contributor: LeetCode
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.
Subscribe to see which companies asked this question.
public boolean isValid(String s) {
if(s==null) return false;
char[] mid = s.toCharArray();
List<Character> store = new ArrayList<Character>();
for(char c:mid){
if(c=='('||c=='['||c=='{')
store.add(c);
if(c==')'){
if(store.size()>0){
if(store.get(store.size()-1)!='(')
return false;
store.remove(store.size()-1);
}
else
return false;
}
if(c==']'){
if(store.size()>0){
if(store.get(store.size()-1)!='[')
return false;
store.remove(store.size()-1);
}
else
return false;
}
if(c=='}'){
if(store.size()>0){
if(store.get(store.size()-1)!='{')
return false;
store.remove(store.size()-1);
}
else
return false;
}
}
if(store.isEmpty())
return true;
else
return false;
}
注意 just the characters,也可以利用栈Stack
public boolean isValid(String s) {
Stack<Character> stack = new Stack<Character>();
for (char c : s.toCharArray()) {
if (c == '(')
stack.push(')');
else if (c == '{')
stack.push('}');
else if (c == '[')
stack.push(']');
else if (stack.isEmpty() || stack.pop() != c)
return false;
}
return stack.isEmpty();
}