gpt4 book ai didi

c - 如何判断所有括号是否平衡(C)

转载 作者:行者123 更新时间:2023-11-30 21:23:37 25 4
gpt4 key购买 nike

所以我有一个充满括号的数组,例如:

1) (()())())((())(())

2) ()((()()))

任何开括号( '(' )也应该由另一个开括号 (')' 括起来

例如 1) ->

(()())())((())(()) -> (....)..)((..)(..) -> ())(()( ) -> .)(.. ,所以答案是否定的,因为从这里我们可以看到并非所有的括号都是平衡的

例如2) ->

()((()())) -> .((..)) -> (()) -> (..) -> () -> .. ,所以这里答案是肯定的,因为所有括号都是平衡的。在这种情况下,我还想打印所有平衡的括号对的位置,例如:

1,2 & 5,6 & 7,8 & 3,10 & 4,9

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~

最佳答案

就您而言,使用计数器就很简单。 ( 递增,) 递减。它不应该低于 0,并且如果平衡的话最终应该为 0。

如果您要像编译器和解释器一样创建一些语法解析器,则可以考虑使用堆栈。

编辑:您需要使用堆栈来打印这些对。由于需要用C手动实现栈,所以下面是C++的引用代码。

std::stack<int> s;
switch(string[i]) {
case '(':
s.push(i);
break;
case ')':
if(!s.empty()) {
printf("%d, %d\n", s.top(), i);
s.pop();
} else {
// Fail here
}
break;
}
if(!s.empty()) // Fail here

关于c - 如何判断所有括号是否平衡(C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42691139/

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