个人思路总结:
先来说一说普通的思路吧。其实需要借助栈来完成。对字符串进行遍历,如果碰到’(、’{’、’[‘的话,就进栈。如果碰到’)、’}’、’]'的话,就与栈顶进行比较,如果相等的话,则将栈顶出栈。否则直接输出false。
当全部遍历完之后,如果此时栈为空,则返回true。否则,返回false。
代码如下:
class Solution {
public:
bool isValid(string s) {
int len = s.size();
stack<int> tmp;
for(int i=0;i<len;i++)
{
if(s[i]=='('||s[i]=='{'||s[i]=='[')
tmp.push(s[i]);
else
{
if(tmp.empty())
return false;
switch(tmp.top())
{
case '(':
if(s[i]==')') tmp.pop();
else return false;
break;
case '[':
if(s[i]==']') tmp.pop();
else return false;
break;
case '{':
if(s[i]=='}') tmp.pop();
else return false;
break;
}
}
}
if(tmp.empty())
return true;
else
return false;
}
};
然后粘一个我看到的巨nb的思维,一定要说出来,用python写的,当时我都震惊了!!直接上代码(python)
class Solution:
def isValid(self, s):
while '{}' in s or '()' in s or '[]' in s:
s = s.replace('{}', '')
s = s.replace('[]', '')
s = s.replace('()', '')
return s == ''