如果用戶給我一個如(()())
這樣的括號的任意組合的字符串,那麼我需要一個程序來檢查括號的打開和關閉,並且還存儲每個打開和關閉的地址支架分開排列。我該怎麼做?存儲支架的開合地址
-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
做任何給我一個打字的代碼 –