20. 有效的括号

O(n),为了优化空间的话可以动态按需分配栈空间能使用更小的空间,比如可以使用双向链表来优化,不过需要在链表的指针空间和测试用例中是长字符串快速不匹配还是长串临近结尾不匹配或直接匹配做权衡,如果是后者肯能带来更多的内存消耗.

在这里插入图片描述

bool isValid(char * s){
    char *stack=malloc(sizeof(char)*strlen(s));
    int idx=0;
    char c=*s;
    while(c!='\0'){
        switch(c){
            case '(':
                stack[idx++]=c;
                break;
            case '{':
                stack[idx++]=c;
                break;
            case '[':
                stack[idx++]=c;
                break;
            case ')':
                if(idx<1||stack[--idx]!='('){
                    return false;
                }
                break;
            case '}':
                if(idx<1||stack[--idx]!='{'){
                    return false;
                }
                break;
            case ']':
                if(idx<1||stack[--idx]!='['){
                    return false;
                }
                break;
        }
        c=*(++s);
    }
    return idx<1;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值