方法一:用栈实现
C++代码:
#include <stack>
#include <iostream>
using namespace std;
//Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
class Solution {
public:
char reverse_char(char c)
{
switch(c)
{
case ')': return '(';
case '}': return '{';
case ']': return '[';
default: return '\0';
}
}
bool isValid(string s) {
stack<char> sta;
int sz = s.length();
if (sz%2 != 0)
{
return false;
}
for (int i=0;i<sz;++i)
{
if ('(' == s[i] || '{' == s[i] || '[' == s[i])
{
sta.push(s[i]);
}
else if (')' == s[i] || '}' == s[i] || ']' == s[i])
{
if (0 == sta.size() || sta.top() != reverse_char(s[i]))
{
return false;
}
sta.pop();
}
}
if (0 == sta.size())
{
return true;
}
return false;
}
};
int main()
{
Solution s;
cout<<s.isValid("{([])}");
cout<<endl;
cout<<s.isValid("{(])}");
cout<<endl;
return 0;
}