真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

LeetCode如何判斷有效的括號

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

創(chuàng)新互聯(lián)建站主營裕安網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP軟件開發(fā),裕安h5成都小程序開發(fā)搭建,裕安網(wǎng)站營銷推廣歡迎裕安等地區(qū)企業(yè)咨詢

 

題目描述:

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

有效字符串需滿足:

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

 

示例 1:

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

 

示例 2:

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

 

示例 3:

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

 

示例 4:

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

 

思路分析:

 

實(shí)現(xiàn)之。

判斷括號的有效性可以使用「?!惯@一數(shù)據(jù)結(jié)構(gòu)來解決。

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

當(dāng)我們遇到一個右括號時,我們需要將一個相同類型的左括號閉合。此時,我們可以取出棧頂?shù)淖罄ㄌ柌⑴袛嗨鼈兪欠袷窍嗤愋偷睦ㄌ?。如果不是相同的類型,或者棧中并沒有左括號,那么字符串 s 無效,返回 False。為了快速判斷括號的類型,我們可以使用哈希映射(HashMap)存儲每一種括號。哈希映射的鍵為右括號,值為相同類型的左括號。

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

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

 

Python實(shí)現(xiàn)

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

        return stack==[]
   

Java實(shí)現(xiàn):

class Solution {
    public boolean isValid(String s) {
        int len=s.length();
        if(len%2==1){
            return false;
        }
        Map map=new HashMap<>(){
            {
                put(')','(');
                put(']','[');
                put('}','{');
            }
        };
        Stack stack=new Stack<>();
        for(int i=0;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如何判斷有效的括號”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


新聞標(biāo)題:LeetCode如何判斷有效的括號
文章出自:http://weahome.cn/article/pedsci.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部