這讓我有點慌亂。我花了很長的時間試圖找出錯誤,但卻不能。問題是要確定給定的括號內的輸入字符串是否平衡。當它返回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