中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

新邵县| 齐齐哈尔市| 新竹县| 长泰县| 商水县| 林口县| 卓尼县| 龙山县| 浦东新区| 宜城市| 股票| 桃江县| 徐州市| 东源县| 鄂托克前旗| 会宁县| 霞浦县| 清丰县| 疏附县| 九台市| 进贤县| 乳山市| 兴化市| 平山县| 皮山县| 潜江市| 江陵县| 乡宁县| 奇台县| 平江县| 辉县市| 同江市| 西林县| 杭州市| 前郭尔| 河池市| 泉州市| 富锦市| 安远县| 区。| 舞钢市|