思路分析:
? (1)定义一个栈,栈中的类型是char型的
? (2)遍历字符串,如果i碰到左括号,就入栈。碰到右括号的话,首先判断栈不为空,并且当前右括号要与栈顶括号相匹配,否则直接返回false
? (3)遍历结束后,如果栈为空了就代表全部匹配,直接返回true,否则返回false
代码实现: ?
class Solution {
public:
bool isValid(string s) {
stack<char>a;
for(int i=0;i<s.size();i++)
{
if(s[i]=='('||s[i]=='{'||s[i]=='[')
a.push(s[i]);
else{ if(a.size()==0)
return false;
char c;
c=a.top();
if(s[i]==')'&&c!='(')
return false;
if(s[i]=='}'&&c!='{')
return false;
if(s[i]==']'&&c!='[')
return false;
a.pop();
}
}
if(a.size()==0)
return true;
else return false;
}
};
|