目錄
LeetCode-20題
LeetCode-20題
給定一個只包括 '(',')','{','}','[',']' 的字符串 s ,判斷字符串是否有效。
有效字符串需滿足:
左括號必須用相同類型的右括號閉合。
左括號必須以正確的順序閉合。
每個右括號都有一個對應的相同類型的左括號。
class Solution {public boolean isValid(String s) {// checkif (s == null || s.length() < 2)return false;// map的key表示左括號,value表示右括號Map<Character, Character> cache = new HashMap<>();cache.put('(', ')');cache.put('{', '}');cache.put('[', ']');// 借助LinkedList實現的棧LinkedList<Character> stack = new LinkedList<>();for (int i = 0; i < s.length(); i++) {char curr = s.charAt(i);if (cache.containsKey(curr)) {// 如果是左括號,就將其對應的右括號入棧stack.push(cache.get(curr));} else {// 如果是右括號if (!stack.isEmpty() && stack.peek() == curr) {// 此時棧不為空,且棧頂元素就是當前的右括號,執行出棧操作stack.pop();} else {return false;}}}// 此時棧空了就表示s是有效括號return stack.isEmpty();}
}