2.【20. 有效的括號】

題目

給定一個只包括 '(',')','{','}','[',']' 的字符串 s ,判斷字符串是否有效。

有效字符串需滿足:

左括號必須用相同類型的右括號閉合。
左括號必須以正確的順序閉合。

示例 1:

輸入:s = "()"
輸出:true
示例 2:

輸入:s = "()[]{}"
輸出:true
示例 3:

輸入:s = "(]"
輸出:false
示例 4:

輸入:s = "([)]"
輸出:false
示例 5:

輸入:s = "{[]}"
輸出:true

來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/valid-parentheses
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

題解

括號成對出現(xiàn),使用哈希表進(jìn)行存儲;使用棧保證括號的正確順序。

 public boolean isValid(String s) {
        int n = s.length();
        if (n % 2 == 1) {
            return false;
        }
       HashMap<Character, Character> pairs = new HashMap<Character, Character>() {{
            put(')', '(');
            put(']', '[');
            put('}', '{');
        }};
        Deque<Character> stack = new LinkedList<Character>();
        for (int i = 0; i < n; i++) {
            char ch = s.charAt(i);
            if (pairs.containsKey(ch)) {
                if (stack.isEmpty() || stack.peek() != pairs.get(ch)) {
                    return false;
                }
                stack.pop();
            }else{
                stack.push(ch);
            }
        }
        return stack.isEmpty();
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 給定一個只包括 '(',')','{','}','[',']' 的字符串,判斷字符串是否有效。 有效字符串需滿足:...
    huxq_coder閱讀 529評論 0 3
  • 題目描述:給定一個只包括 '(',')','{','}','[',']' 的字符串 s ,判斷字符串是否有效。有效...
    Zy_0818閱讀 246評論 0 1
  • 給定一個只包括 '(',')','{','}','[',']' 的字符串 s ,判斷字符串是否有效。 有效字符串需...
    Abeants閱讀 237評論 0 0
  • 有效的括號 給定一個只包括 '(',')','{','}','[',']' 的字符串,判斷字符串是否有效。有效字符...
    夢vctor閱讀 366評論 0 0
  • 題目鏈接[https://leetcode-cn.com/problems/valid-parentheses/]...
    伶俐ll閱讀 135評論 0 0

友情鏈接更多精彩內(nèi)容