valid parentheses leetcode 第20题
我的思路是用栈来检查括号的匹配。
class Solution {
public:
bool isValid(string str) {
int len = str.length();
if( len < 2)
return false;
if(str[0] == '}' || str[0] == ')' || str[0] == ']')//第一个符号为)、}、]都是false
return false;
if(str[len -1 ] == '(' || str[len -1 ] == ']' || str[len -1 ] == '}')//最后一个符号为(、}、]都
return false; //是false
string tmp;//string 本身就可以当做一个字符栈用
while(len --)//从后往前检查
{
if(str[len] == ')' || str[len] == ']' || str[len] == '}')
tmp.push_back(str[len]);
else
{
switch(str[len])
{
case '(' :
if(tmp[tmp.size() - 1] != ')')
return false;
if(tmp[tmp.size() - 1] == ')')
tmp.resize(tmp.size() - 1);
break;
case '[' :
if(tmp[tmp.size() - 1] != ']')
return false;
if(tmp[tmp.size() - 1] == ']')
tmp.resize(tmp.size() - 1);
break;
case '{' :
if(tmp[tmp.size() - 1] != '}')
return false;
if(tmp[tmp.size() - 1] == '}')
tmp.resize(tmp.size() - 1);
break;
default: return false;
}
}
}
if(tmp.size() == 0)
return true;
else return false;
}
};