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.
思路
使用栈,见到左括号入栈,右括号出栈。栈空了之后第一次入栈的注意看是不是左括号,出栈的时候注意看是不是匹配,最后遍历完毕的时候注意看栈里面是不是还有没有匹配完的字符。
class Solution {
public:
bool isValid(string s) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
if(s.length() == 0) return true;
if(s.length() % 2 == 1) return false;
stack<char> st;
for(int i = 0; i < s.length(); i++)
{
if(st.empty())
{
if(s[i] == ']' || s[i] == ')' || s[i] == '}') return false;
else if(s[i] == '[') st.push(']');
else if(s[i] == '(') st.push(')');
else if(s[i] == '{') st.push('}');
}
else
{
char tmp=st.top();
if(tmp == '[' || tmp == '(' || tmp == '{') return false;
if(s[i] == '[')
{
st.push(']');
continue;
}
else if(s[i] == '(')
{
st.push(')');
continue;
}
else if(s[i] == '{')
{
st.push('}');
continue;
}
if(tmp == s[i]) st.pop();
else return false;
}
}
if(st.empty()) return true;
else return false;
}
};

本文介绍了一种使用栈来验证包含'(){}
5133

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



