20.有效的括號

問題描述

給定一個只包括'('燃异,')'携狭,'{','}'回俐,'['逛腿,']'的字符串,判定字符串是否有效仅颇。
有效字符串需滿足:

  • 左括號必須用想同類型的右括號閉合单默。
  • 左括號必須以正確的順序閉合。

注意空字符串可被認為是有效字符串忘瓦。
示例 1:

輸入: "()"
輸出: true

示例 2:

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

示例 3:

輸入: "(]"
輸出: false

示例 4:

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

示例 5:

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

解題思路

之前沒怎么刷過算法題搁廓,所以參考了下別人的代碼,大致都是通過遍歷字符串中的字符,首先將"(""{""["這三種字符壓進棧境蜕,當遇到")""{""["這三種字符時蝙场,進行出棧操作,將出棧后的字符與遇到的字符做匹配粱年,如匹配成功則算法繼續(xù)運行售滤,當匹配不成功時則退出算法返回False。

另外台诗,在自己實現(xiàn)算法時發(fā)現(xiàn)經(jīng)常需要判斷棧是否為空完箩,有時候棧不為空時卻返回了字符串為正確的結(jié)果,在自己做題時還是需要注意到這些細節(jié)的拉队。

具體代碼

class Solution(object):
    def isValid(self, s):
        """
        :type s: str
        :rtype: bool
        """
        i = 0
        stack = []
        while i < len(s):
            if s[i] == "[" or s[i] == "{" or s[i] == "(":
                stack.append(s[i])
            elif s[i] == "]" and stack: #判定棧是否為空
                if stack[-1] == "[":
                    stack.pop()
                else:
                    break
            elif s[i] == "}" and stack:
                if stack[-1] == "{":
                    stack.pop()
                else:
                    break
            elif s[i] == ")" and stack:
                if stack[-1] == "(":
                    stack.pop()
                else:
                    break
            else:#這種情況是棧為空或者遇到其他符號
                break
            i += 1
        if i == len(s) and not stack:#棧為空時才算正確
            return True
        else:
            return False
        
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末弊知,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子粱快,更是在濱河造成了極大的恐慌秩彤,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件皆尔,死亡現(xiàn)場離奇詭異呐舔,居然都是意外死亡,警方通過查閱死者的電腦和手機慷蠕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門珊拼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人流炕,你說我怎么就攤上這事澎现。” “怎么了每辟?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵剑辫,是天一觀的道長。 經(jīng)常有香客問我渠欺,道長妹蔽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任挠将,我火速辦了婚禮胳岂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘舔稀。我一直安慰自己乳丰,他們只是感情好,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布内贮。 她就那樣靜靜地躺著产园,像睡著了一般汞斧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上什燕,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天粘勒,我揣著相機與錄音,去河邊找鬼屎即。 笑死仲义,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的剑勾。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼赵颅,長吁一口氣:“原來是場噩夢啊……” “哼虽另!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起饺谬,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤捂刺,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后募寨,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體族展,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年拔鹰,在試婚紗的時候發(fā)現(xiàn)自己被綠了仪缸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡列肢,死狀恐怖恰画,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瓷马,我是刑警寧澤拴还,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站欧聘,受9級特大地震影響片林,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜怀骤,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一费封、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧晒喷,春花似錦孝偎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寺旺。三九已至,卻和暖如春势决,著一層夾襖步出監(jiān)牢的瞬間阻塑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工果复, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留陈莽,地道東北人。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓虽抄,卻偏偏與公主長得像走搁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子迈窟,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容