20. 有效的括號

給定一個只包括 '(',')'隧期,'{'飒责,'}','['仆潮,']' 的字符串 s 宏蛉,判斷字符串是否有效。

有效字符串需滿足:

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

示例 1:

輸入:s = "()"
輸出:true
示例 2:

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

輸入:s = "(]"
輸出:false
示例 4:

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

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

方法一:棧
判斷括號的有效性可以使用「棧」這一數(shù)據(jù)結(jié)構(gòu)來解決鹏浅。

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

當(dāng)我們遇到一個右括號時褪那,我們需要將一個相同類型的左括號閉合。此時式塌,我們可以取出棧頂?shù)淖罄ㄌ柌⑴袛嗨鼈兪欠袷窍嗤愋偷睦ㄌ柌┚础H绻皇窍嗤念愋停蛘邨V胁]有左括號峰尝,那么字符串 ss 無效偏窝,返回 \text{False}False。為了快速判斷括號的類型境析,我們可以使用哈希表存儲每一種括號囚枪。哈希表的鍵為右括號,值為相同類型的左括號劳淆。

在遍歷結(jié)束后链沼,如果棧中沒有左括號,說明我們將字符串 ss 中的所有左括號閉合沛鸵,返回 \text{True}True括勺,否則返回 \text{False}False缆八。

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

作者:LeetCode-Solution
鏈接:https://leetcode-cn.com/problems/valid-parentheses/solution/you-xiao-de-gua-hao-by-leetcode-solution/
來源:力扣(LeetCode)
著作權(quán)歸作者所有乱豆。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)奖恰,非商業(yè)轉(zhuǎn)載請注明出處。

class Solution {
    public boolean isValid(String s) {
         Map<Character, Character> pairs = new HashMap<Character, Character>() {{
            put(')', '(');
            put(']', '[');
            put('}', '{');
         }};
        if (s.length()%2==1){
            return false;
        }
        Deque<Character> stack = new LinkedList<Character>();
        for (int i =0;i<s.length();i++){
            char ch=s.charAt(i);
            if (pairs.containsKey(ch)){
                if (stack.isEmpty() || stack.peek() != pairs.get(ch)) {
                    return false;
                }
                stack.pop();
            }else{
            stack.push(ch);
            }
        }
        return stack.isEmpty();
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宛裕,一起剝皮案震驚了整個濱河市瑟啃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌揩尸,老刑警劉巖蛹屿,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異岩榆,居然都是意外死亡错负,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進(jìn)店門勇边,熙熙樓的掌柜王于貴愁眉苦臉地迎上來犹撒,“玉大人,你說我怎么就攤上這事粥诫∮秃剑” “怎么了?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵怀浆,是天一觀的道長谊囚。 經(jīng)常有香客問我,道長执赡,這世上最難降的妖魔是什么镰踏? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮沙合,結(jié)果婚禮上奠伪,老公的妹妹穿的比我還像新娘。我一直安慰自己首懈,他們只是感情好绊率,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著究履,像睡著了一般滤否。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上最仑,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天藐俺,我揣著相機(jī)與錄音炊甲,去河邊找鬼。 笑死欲芹,一個胖子當(dāng)著我的面吹牛卿啡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播菱父,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼颈娜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了滞伟?” 一聲冷哼從身側(cè)響起揭鳞,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎梆奈,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體称开,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡亩钟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鳖轰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片清酥。...
    茶點(diǎn)故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蕴侣,靈堂內(nèi)的尸體忽然破棺而出焰轻,到底是詐尸還是另有隱情,我是刑警寧澤昆雀,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布辱志,位于F島的核電站,受9級特大地震影響狞膘,放射性物質(zhì)發(fā)生泄漏揩懒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一挽封、第九天 我趴在偏房一處隱蔽的房頂上張望已球。 院中可真熱鬧,春花似錦辅愿、人聲如沸智亮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阔蛉。三九已至,卻和暖如春亦鳞,著一層夾襖步出監(jiān)牢的瞬間馍忽,已是汗流浹背棒坏。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留遭笋,地道東北人坝冕。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像瓦呼,于是被迫代替她去往敵國和親喂窟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評論 2 359

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