亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

LeetCode如何判斷有效的括號

發布時間:2021-12-04 15:45:16 來源:億速云 閱讀:110 作者:小新 欄目:大數據

小編給大家分享一下LeetCode如何判斷有效的括號,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

 

題目描述:

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

有效字符串需滿足:

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

 

示例 1:

輸入:s = "()"
輸出:true

 

示例 2:

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

 

示例 3:

輸入:s = "(]"
輸出:false

 

示例 4:

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

 

思路分析:

 

實現之。

判斷括號的有效性可以使用「棧」這一數據結構來解決。

我們對給定的字符串 ss 進行遍歷,當我們遇到一個左括號時,我們會期望在后續的遍歷中,有一個相同類型的右括號將其閉合。由于后遇到的左括號要先閉合,因此我們可以將這個左括號放入棧頂。

當我們遇到一個右括號時,我們需要將一個相同類型的左括號閉合。此時,我們可以取出棧頂的左括號并判斷它們是否是相同類型的括號。如果不是相同的類型,或者棧中并沒有左括號,那么字符串 s 無效,返回 False。為了快速判斷括號的類型,我們可以使用哈希映射(HashMap)存儲每一種括號。哈希映射的鍵為右括號,值為相同類型的左括號。

在遍歷結束后,如果棧中沒有左括號,說明我們將字符串 s 中的所有左括號閉合,返回 True,否則返回 False。

注意到有效字符串的長度一定為偶數,因此如果字符串的長度為奇數,我們可以直接返回 False,省去后續的遍歷判斷過程。

 

Python實現

class Solution:
    def isValid(self, s: str) -> bool:
        stack=[]                            #設置一個列表,把該列表當做棧來使用即可。
        dic={')':'(','}':'{',']':'['}       #使用字典存儲括號,并且右括號為key,左括號為value
        for char in s:
            if char in dic.values():        #左括號就入棧
                stack.append(char)
            elif char in dic.keys():        #有右括號的話就進行比較,
                if stack==[] or dic[char] != stack.pop():
                    return False
            else:
                return False                #不再字典中的輸入直接輸出錯誤

        return stack==[]
   

Java實現:

class Solution {
    public boolean isValid(String s) {
        int len=s.length();
        if(len%2==1){
            return false;
        }
        Map<Character,Character> map=new HashMap<>(){
            {
                put(')','(');
                put(']','[');
                put('}','{');
            }
        };
        Stack<Character> stack=new Stack<>();
        for(int i=0;i<len;i++){
            char ch=s.charAt(i);
            if(map.containsKey(ch)){
                if(stack.isEmpty() || stack.peek()!=map.get(ch)){
                    return false;
                }
                stack.pop();
            }else{
                stack.push(ch);
            }
        }
        return stack.isEmpty();
    }
}

以上是“LeetCode如何判斷有效的括號”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

迁安市| 察隅县| 台州市| 容城县| 太原市| 大厂| 长沙市| 肇庆市| 鄄城县| 白城市| 华安县| 正宁县| 古蔺县| 庄河市| 宁强县| 金山区| 渭南市| 社会| 方城县| 浪卡子县| 临猗县| 东台市| 泰兴市| 福鼎市| 阜南县| 贵溪市| 吉安县| 洞头县| 苏尼特左旗| 永济市| 阿荣旗| 灵武市| 当雄县| 东明县| 南和县| 托里县| 丰顺县| 舒兰市| 区。| 莱芜市| 深泽县|