20-简单-有效的括号

在这里插入图片描述
如果括号有效,则一定是成对出现的,且需要最长的栈长度是 len/2,while前判断开头是否为右括号,则while中右括号出栈不需要考虑是空栈

bool isValid(char * s){

    int j = 0;
    int len = strlen(s);
    char stack[len/2+1];
    if (0 == len) return true;
    else if(len % 2) return false;
    if ((')' == s[0])||(']' == s[0])||('}' == s[0]))return false;
    while(*s){
        switch (*s){
        case '(':
        case '[':    
        case '{':
            if(j >= len/2){
                return false;
            }
            stack[j++] = *s;
            break;
        case ')':
            if (stack[--j] != '('){
                return false;
            }
            break;
        case ']':
            if (stack[--j] != '['){
  
                return false;
            }
            break;
        case '}':
            if (stack[--j] != '{'){
                return false;
            }
            break;
        default:
            break;
        }
        s++;
    }
    if (0 != j){
        return false;
    }else{
        return true;
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lala0903/article/details/107554827
今日推荐