如果用户给我一个如(()())
这样的括号的任意组合的字符串,那么我需要一个程序来检查括号的打开和关闭,并且还存储每个打开和关闭的地址支架分开排列。我该怎么做?存储支架的开合地址
-4
A
回答
0
在括号类型是一种类型的情况下,不需要通过增加或减少计数器来保存某些内容。
例子像下面
#include <stdio.h>
#include <stdbool.h>
bool isBalanceBracket(const char *s){
int count = 0;
for(int i = 0; s[i] ; ++i){
if(s[i] == '(')
++count;
else if(s[i] == ')')
if(--count < 0)
return false;
}
return count == 0;
}
int main(void){
const char *test[] = {
"(()())", ")()(", "()))"
};
for(int i = 0; i < sizeof(test)/sizeof(*test); ++i){
if(isBalanceBracket(test[i]))
printf("%s is OK\n", test[i]);
else
printf("%s is NG\n", test[i]);
}
return 0;
}
+0
,但如何我可以存储括号的开放和闭幕的地址如果用户输入(()()),那么我想为每个地址1,6 2,3 4,5支架 –
+0
@NavinChauhan为什么有必要?我认为实施一个堆栈会更好。 – BLUEPIXY
+0
我想从最里面的支架删除变量 –
使用堆栈或递归调用跟踪嵌套的,和一个列表或者类似的跟踪排序。 – paddy
只需数数,倒计时。 – BLUEPIXY
做任何给我一个打字的代码 –