2.分析问题
好吧,这道题之前见过,所以也谈不上分析,直接用栈的思想去解决,当时左边括号时直接压入,如果时右边括号时,看看顶部的元素是不是对应的左括号,如果是就弹出,否则压入该右括号。最后统计栈是不是非零,如果是非零就返回true.代码如下:
bool isValid(string s)
{ /*s代表传入字符串*/
stack<char> sta;//栈
int size=s.size();
for(int i=0;i<size;i++)
{
switch (s[i])//写的比较复杂,就将一下
{
case ')':if( !sta.empty()&&sta.top()=='(') {sta.pop();break;}
case ']':if (!sta.empty()&&sta.top()=='[') {sta.pop();break;}
case '}':if (!sta.empty()&&sta.top()=='{') {sta.pop();break;}
case '(':
case '[':
case '{':sta.push(s[i]);break;
default :break;
}
}
return sta.size()==0? true:false;
}