# leetcode#20有效的括號
阿新 • • 發佈:2021-01-12
技術標籤:leetcode50題leetcode
leetcode#20有效的括號
題目
給定一個只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
思路
迴圈字串,把左邊各種括號壓入棧。如果遇到右括號,則跟棧頂的符號比較。如果匹配,則棧頂元素出棧,不匹配則返回false
示例 1: 輸入: "()" 輸出: true 示例 2: 輸入: "()[]{}" 輸出: true 示例 3: 輸入: "(]" 輸出: false 示例 4: 輸入: "([)]" 輸出: false 示例 5: 輸入: "{[]}" 輸出: true c++``` class Solution { public: bool isValid(string s) { if(s=="")return true; stack<char> st; for(auto i:s){ if(i=='(' || i=='{' || i=='[') st.push(i); else{ if(st.size()==0 && (i==']'||i=='}'||i==')')) return false; else if(i=='}' && st.top()!='{' || i==']'&& st.top()!='[' || i==')' && st.top()!='(') return false; else st.pop(); } } if(st.size()!=0) return false; return true; } };