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) {
int i;
vector<char> charVec;
stack<char> charStack;
//底下的第一个循环有些多余了,直接用stack作就可以少一次for循环
for(i=0;i<s.size();i++)
{
if(s[i]=='('||s[i]==')'||s[i]=='{'||s[i]=='}'||s[i]=='['||s[i]==']')
{
charVec.push_back(s[i]);
}
}
if(charVec.size()%2!=0)
{
return false;
}
for(i=0;i<charVec.size();i++)
{
if(charVec[i]=='('||charVec[i]=='{'||charVec[i]=='[')
{
charStack.push(charVec[i]);
}
else
{
if(i==0)
{
return false;
}
if(charVec[i]==')')
{
char tt = charStack.top();
if(tt=='(')
{
charStack.pop();
}
else
{
return false;
}
}
if(charVec[i]=='}')
{
char tt = charStack.top();
if(tt=='{')
{
charStack.pop();
}
else
{
return false;
}
}
if(charVec[i]==']')
{
char tt = charStack.top();
if(tt=='[')
{
charStack.pop();
}
else
{
return false;
}
}
}
}
if(!charStack.empty())
{
return false;
}
return true;
}
/*bool Match(vector<char>&aa,int one,int two)
{
if(aa[one])
}*/
};
本文介绍了一种使用栈数据结构来验证包含括号的字符串是否有效的算法实现。该方法适用于圆括号'()'、方括号'[]'及花括号'{}
329

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



