1. 程式人生 > 其它 >LeetCode 20. 有效的括號

LeetCode 20. 有效的括號

技術標籤:藍橋杯+日常刷題

20. 有效的括號

給定一個只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。

示例 1:

輸入: “()”
輸出: true

示例 2:

輸入: “()[]{}”
輸出: true

示例 3:

輸入: “(]”
輸出: false

示例 4:

輸入: “([)]”
輸出: false

示例 5:

輸入: “{[]}”
輸出: true

解題思路:

利用棧先進後出的原則,把這道題解一下,就可以了。如果為([{這三個符號,則把它們對應的右括號存入堆疊。此時,如果發現一個右括號,則與棧頂的資料進行對比,如果相相同,則將當前的括號彈出,否則,直接返回假。

class Solution {
public:
    bool isValid(string s) {
        stack<char> Stack;
        for (char c: s){
            if (c == '('){
                Stack.push(')');
            }else if (c == '['){
                Stack.push(']');
            }else if (c == '{'){
                Stack.push('}'
); // 這裡對stack為empty做判斷的要求是如果出現()) }else if (Stack.empty() || c!= Stack.top()){ return 0; }else{ Stack.pop(); } } // 這裡對stack為empty做空的判斷要求是((( return Stack.empty(); } };