Leetcode題解之其他(5)有效的括號
阿新 • • 發佈:2018-12-02
題目:https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/26/others/68/
題目描述:
給定一個只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字串,判斷字串是否有效。
有效字串需滿足:
- 左括號必須用相同型別的右括號閉合。
- 左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1:
輸入: "()" 輸出: true
示例 2:
輸入: "()[]{}" 輸出: true
示例 3:
輸入: "(]" 輸出: false
示例 4:
輸入: "([)]" 輸出: false
示例 5:
輸入: "{[]}" 輸出: true
思路:利用棧的特性解決:通過判斷 來把 它們每個的 另一半 進棧。當遇到非(、 { 、[ 、 開始出棧 由於棧先進後出,所以只要彈出的符號不是和遍歷到符號相等,又或者遇到還在遍歷但是棧為空得情況,就可以推出,false。
程式碼:
class Solution { public static boolean isValid(String s) { Stack<Character> stack = new Stack<Character>();//利用棧資料結構 for(Character c:s.toCharArray()){ if(c=='('){ stack.push(')'); } else if(c=='{'){ stack.push('}'); } else if(c=='['){ stack.push(']'); //關鍵的判斷 }else if(stack.isEmpty()||stack.pop()!=c){ return false; } } return stack.isEmpty(); } }