题目:
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.
Example 1:
Input: “()”
Output: true
Example 2:
Input: “()[]{}”
Output: true
Example 3:
Input: “(]”
Output: false
Example 4:
Input: “([)]”
Output: false
Example 5:
Input: “{[]}”
Output: true
注意:该题判断括号是否匹配,需要用到栈,当遇到左括号时入栈,遇到右括号时出栈。
class Solution {
public:
bool isValid(string s) {
stack<char> t;
if(s.empty()) return true;
for(int i=0;i<s.size();i++)
{
if(s[i]=='(' || s[i]=='{' || s[i]=='[')
t.push(s[i]);
else
{
if(t.empty()) return false;
if(s[i]==')' && t.top()!='(') return false;
if(s[i]=='}' && t.top()!='{') return false;
if(s[i]==']' && t.top()!='[') return false;
t.pop();
}
}
return t.empty();
}
};
if(t.empty()) return false;这一句很重要,可以避免运算超时。