leetcode棧之有效的括號

本文主要記錄一下leetcode棧之有效的括號網絡

題目

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

有效字符串需知足:

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

注意空字符串可被認爲是有效字符串。

示例 1:

輸入: "()"
輸出: true

示例 2:

輸入: "()[]{}"
輸出: true

示例 3:

輸入: "(]"
輸出: false

示例 4:

輸入: "([)]"
輸出: false

示例 5:

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

來源:力扣(LeetCode)
連接:https://leetcode-cn.com/problems/valid-parentheses
著做權歸領釦網絡全部。商業轉載請聯繫官方受權,非商業轉載請註明出處。

題解

class Solution {
    public boolean isValid(String s) {
        Stack<Character>stack = new Stack<Character>();
        for(char c: s.toCharArray()){
            if(c=='(')stack.push(')');
            else if(c=='[')stack.push(']');
            else if(c=='{')stack.push('}');
            else if(stack.isEmpty()||c!=stack.pop())return false;
        }
        return stack.isEmpty();
    }
}

小結

這裏藉助棧,而後遍歷每一個char,針對([{分別push對應配對的char,其餘的則判斷stack是否爲空或者pop出來的值是否與之相等,若是不等則返回false,若是遍歷完以後,stack不爲空則返回false,爲空返回true。code

doc

相關文章
相關標籤/搜索