20. 有效的括號 (對括號字串進行有效判定)
阿新 • • 發佈:2020-10-10
題目
給定一個只包括 '(',')','{','}','[',']'的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1:
輸入: "()"
輸出: true
示例2:
輸入: "()[]{}"
輸出: true
示例3:
輸入: "(]"
輸出: false
示例4:
輸入: "([)]"
輸出: false
示例5:
輸入: "{[]}"
輸出: true
來源:力扣(LeetCode)
解答
C語言
利用棧,依次遍歷字串,當為前括號"(""[""{"時,入棧,填入對應的後括號。
當遍歷到的字元不為前括號,且top == -1
否則出棧
--top
。遍歷完畢後,檢查top是否為-1,即可判定字串是否合規。
// 0 ms 5 MB bool isValid(char * s){ int len = strlen(s); char stack[len + 1]; int top = -1; int i; for(i = 0; i < len; i++) { if (s[i] == '(') { stack[++top] = ')'; } else if (s[i] == '[') { stack[++top] = ']'; } else if (s[i] == '{') { stack[++top] = '}'; } else if (top == -1 || s[i] != stack[top]) { return false; } else { --top; } } if (top == -1) { return true; } else { return false; } }