程式語言 - LeetCode - C - 20. Valid Parentheses



題目:


解答:

bool isValid(char *s)
{
    int i = 0;
    int len = strlen(s);
    int idx = 0;
    int ch = 0;
    char* p = calloc(sizeof(char), len);
    
    for (i = 0; i < len; i++) {
        switch (s[i]) {
        case ')':
        case '}':
        case ']':
            if (s[i] == ')') {
                ch = '(';
            }
            else if (s[i] == '}') {
                ch = '{';
            }
            else if (s[i] == ']') {
                ch = '[';
            }
                
            if ((idx == 0) || (p[idx - 1] != ch)) {
                return false;
            }
            idx-= 1;
            break;
        default:
            p[idx++] = s[i];
            break;
        }
    }

    return idx ? false : true;
}