【每日一題】 力扣 20題 有效的括號
阿新 • • 發佈:2020-08-14
給定一個只包括'('
,')'
,'{'
,'}'
,'['
,']'
的字串,判斷字串是否有效。
有效字串需滿足:
- 左括號必須用相同型別的右括號閉合。
- 左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1:
輸入: "()" 輸出: true
示例2:
輸入: "()[]{}" 輸出: true
示例3:
輸入: "(]" 輸出: false
示例4:
輸入: "([)]" 輸出: false
示例5:
輸入: "{[]}" 輸出: true
思路:用棧把前括號存起來,然後對應歷遍,棧的特性,先進後出。
s.empty();//作為判斷容器是否為空的函式,容器為空返回 true(1)否則返回false(0);s.size(); //返回棧中元素的個數 s.top(); //返回棧頂元素, 但不刪除該元素 s.pop(); //彈出棧頂元素, 但不返回其值 s.push(); //將元素壓入棧頂
class Solution { public: bool isValid(string s) { stack <char> str; int len = s.length(); if(len % 2 == 1){ return false; } for(int i = 0;i < len;i++){char a = s[i]; if(a == '{'|| a == '['|| a == '('){ str.push(a); } else { if(str.empty()){ return false; } char c = str.top(); str.pop(); if(c == '('&& a != ')')return false; if(c == '{' && a != '}')return false; if(c == '[' && a != ']')return false; } } return str.empty();
}
}