题目描述:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。![在这里插入图片描述](https://img-blog.csdnimg.cn/20200713222829494.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xfY19jX2M=,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200713222926171.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xfY19jX2M=,size_16,color_FFFFFF,t_70)
代码解析:最后一行不能return true,因为当只有(,{,【时会出错。
代码:
class Solution {
public:
bool isValid(string s) {
stack<char>paren;
for(char&c:s){
switch(c){
case'(':
case'{':
case'[':paren.push(c);break;
case')':
if(paren.empty()||paren.top()!='(') return false;
else paren.pop();break;
case'}':
if(paren.empty()||paren.top()!='{') return false;
else paren.pop();break;
case']':
if(paren.empty()||paren.top()!='[') return false;
else paren.pop();break;
default:;
}
}
return paren.empty();
}
};