存储支架的开合地址

时间:2016-11-25 02:19:03

标签: c

如果用户给我一串任意组合的字符串,如(()()),那么我想要一个程序来检查支架的打开和关闭,并且还将每个支架的打开和关闭地址分别存储在一个安排的方式。我该怎么办?

1 个答案:

答案 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;
}