#include<iostream> #include<stack> #include<string> using namespace std; int main () { string A; string b,a; int temp1=0; int temp2=0; stack<string> stc; cin>>A; for(int i=0;i!=A.size();i++) { b=A.substr(i,1); stc.push(b); } for(int i=0;i!=stc.size();i++) { a=stc.top(); stc.pop(); if(a=="(") temp1++; if(a==")") temp2++; } if(temp1==temp2) { cout<<"true"; } else cout<<"false"; return 0; }以上代码有什么问题吗?
时间: 2024-03-25 14:42:05 浏览: 67
#include <iostream>
这段代码的问题在于第二个for循环的条件不正确。stack没有size()方法,需要用empty()方法来判断是否为空。正确的代码应该是:
```
for(int i=0;i!=A.size();i++)
{
b=A.substr(i,1);
stc.push(b);
}
while(!stc.empty())
{
a=stc.top();
stc.pop();
if(a=="(")
temp1++;
if(a==")")
temp2++;
}
```
另外,这段代码只是判断左右括号数量是否相等,并没有判断左右括号是否匹配,如果有多余的左括号或右括号也会输出true。
阅读全文