2016-11-25 66 views
-4

如果用户给我一个如(()())这样的括号的任意组合的字符串,那么我需要一个程序来检查括号的打开和关闭,并且还存储每个打开和关闭的地址支架分开排列。我该怎么做?存储支架的开合地址

+0

使用堆栈或递归调用跟踪嵌套的,和一个列表或者类似的跟踪排序。 – paddy

+0

只需数数,倒计时。 – BLUEPIXY

+0

做任何给我一个打字的代码 –

回答

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

我想从最里面的支架删除变量 –