如果我不想写栈,还可以咋办?

栈分为数组栈和链表栈,不想写栈的话,咱就写个数组,一样可以存储一半的符合,一样可以后进先出!!!


    int len = strlen(s);

    char stack[len + 1];

完整的代码如下:

bool isValid(char* s) {
    int len = strlen(s);
    if (len % 2 != 0) {
        return false; // 字符串长度为奇数,无法匹配
    }
    
    char stack[len + 1];
    int top = 0;
    
    for (int i = 0; i < len; i++) {
        if (s[i] == '(' || s[i] == '{' || s[i] == '[') {
            stack[top++] = s[i]; // 左括号入栈
        } else {
            if (top == 0) {
                return false; // 栈为空,无法匹配
            }
            
            char c = stack[--top];
            if ((s[i] == ')' && c != '(') ||
                (s[i] == '}' && c != '{') ||
                (s[i] == ']' && c != '[')) {
                return false; // 括号不匹配
            }
        }
    }
    
    return top == 0; // 栈中无剩余括号
}

你可能感兴趣的:(算法)