这让我有点慌乱。我花了很长的时间试图找出错误,但却不能。问题是要确定给定的括号内的输入字符串是否平衡。当它返回1时,输入'{[()()]}'返回0。下面的代码实际上并没有达到返回1部分,但我不明白为什么不 - 到那时栈应该是空的。有任何想法吗?平衡支架 - 堆栈未被识别为空
#include <stack>
int solution(string &S) {
stack<char> bracketStack;
char a, b, c;
for (int i = 0; i < S.length(); i++) {
if (S[i]=='{' || S[i]=='[' || S[i]=='(') {
bracketStack.push(S[i]);
} else {
switch (S[i]) {
case ('}') :
a = bracketStack.top();
bracketStack.pop();
if (a==']' || a==')') {
return 0;
}
case (']') :
b = bracketStack.top();
bracketStack.pop();
if (b=='}' || b==')') {
return 0;
}
case (')') :
c = bracketStack.top();
bracketStack.pop();
if (c==']' || c=='}') {
return 0;
}
}
}
}
if (bracketStack.empty()) {
cout << "empty";
return 1;
} else {
return 0;
}
}
“有什么想法?”是的。 **调试程序**。花时间学习如何。它会为您节省数不清的时间,只是盯着代码,想知道为什么它正在做它正在做的事情。 – bolov