题目描述:Given a string containing just the characters '('
, ')'
, '{'
, '}'
, '['
and ']'
, determine if the input string is valid.
An input string is valid if:
- Open brackets must be closed by the same type of brackets.
- Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.
汉语理解:给出一个字符串由如上面的六种符号组成,判断这个字符串是否是满足有效的括号字符。注其中的空字符串也是有效的。
解题思路:使用栈来作为(,{,[存放的数据结构,若遇到后括号的任何一个,取栈顶的元素是否相配,若相配,出栈继续,若栈空或者不相配,返回false,结束。
代码(java):
class Solution {
public boolean isValid(String s) {
Stack<Character> stack=new Stack<Character>();
for(int i=0;i<s.length();i++){
if(s.charAt(i)=='(' || s.charAt(i)=='[' || s.charAt(i)=='{'){
stack.push(s.charAt(i));
}
else if(s.charAt(i)==')'){
if(stack.empty()==true)return false;
else if(stack.peek()=='('){
stack.pop();
}
else{
return false;
}
}
else if(s.charAt(i)==']'){
if(stack.empty()==true)return false;
else if(stack.peek()=='['){
stack.pop();
}
else{
return false;
}
}
else if(s.charAt(i)=='}'){
if(stack.empty()==true)return false;
else if(stack.peek()=='{'){
stack.pop();
}
else{
return false;
}
}
}
if(stack.empty()==true)return true;
return false;
}
}