gpt4 book ai didi

c - 括号错误匹配

转载 作者:太空宇宙 更新时间:2023-11-04 08:45:15 27 4
gpt4 key购买 nike

我正在尝试匹配括号。需要匹配的是'()'、'[]'、'{}'和'[{}]'应该输出true。我不希望它适用于“[{]}”或“[{}”等情况。虽然,现在我的代码没有为正确的匹配输出是,即使它应该是真的。

代码(更新):

int booleanBalanceBracket(aStack *theStack){
aStack *balanceStack = NULL;

while(theStack){
if(theStack->token == '[' || theStack->token == '{' || theStack->token == '(')
balanceStack = pushBracket(theStack->token, balanceStack);
else if(theStack->token == ']' || theStack->token == '}' || theStack->token == ')'){
if(balanceStack == NULL)
return 0;
else
balanceStack = popBracket(balanceStack);
}
theStack = theStack->nextItem;
}
if(balanceStack == NULL){
return 1;
}else{
return 0;
}

}
int isMatching(int token1, int token2){
if(token2 == '(' && token1 == ')')
return 1;
else if(token2 == '{' && token1 == '}')
return 1;
else if(token2 == '[' && token1 == ']')
return 1;
else
return 0;
}

最佳答案

试试这个简单的算法:

for each char c in the input
if opener
push on stack
else if closer
if stack is empty or doesn't match
return false
else
remove top of stack

return true if stack is empty, else false

这可以稍微优化以避免空堆栈检查,也可以通过最初将 EOF 压入堆栈并将 EOF 与 EOF 匹配来避免对 EOF 的显式检查。

关于c - 括号错误匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21925428/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com