2016-11-25 63 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

我想從最裏面的支架刪除變量 –