成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

[Leetcode] Valid Parentheses 驗(yàn)證有效括號對

zhkai / 1753人閱讀

摘要:如棧中是,來一個(gè)變成,再來一個(gè),變成。注意棧在或者操作之前要驗(yàn)證非空,否則會(huì)拋出。代碼最后要判斷棧的大小,如果循環(huán)結(jié)束后棧內(nèi)還有元素,說明也是無效的代碼

Valid Parentheses
Given a string containing just the characters "(", ")", "{", "}", "[" and "]", determine if the input string is valid.

The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

棧法 復(fù)雜度

時(shí)間 O(N) 空間 O(N)

思路

棧最典型的應(yīng)用就是驗(yàn)證配對情況,作為有效的括號,有一個(gè)右括號就必定有一個(gè)左括號在前面,所以我們可以將左括號都push進(jìn)棧中,遇到右括號的時(shí)候再pop來消掉。這里不用擔(dān)心連續(xù)不同種類左括號的問題,因?yàn)橛行У睦ㄌ枌ψ罱K還是會(huì)有緊鄰的括號對。如棧中是({[,來一個(gè)]變成({,再來一個(gè)},變成(。

注意

棧在peek或者pop操作之前要驗(yàn)證非空,否則會(huì)拋出StackEmptyException。

代碼最后要判斷棧的大小,如果循環(huán)結(jié)束后棧內(nèi)還有元素,說明也是無效的

代碼
public class Solution {
    public boolean isValid(String s) {
        Map map = new HashMap();
        map.put("(",")");
        map.put("[","]");
        map.put("{","}");
        Stack stk = new Stack();
        for(int i = 0; i < s.length(); i++){
            Character c = s.charAt(i);
            switch(c){
                case "(": case "[": case "{":
                    stk.push(c);
                    break;
                case ")": case "]": case "}":
                    if(stk.isEmpty() || c != map.get(stk.pop())){
                        return false;
                    }
            }
        }
        return stk.isEmpty();
    }
}

2018/2

class Solution:
    def isValid(self, s):
        """
        :type s: str
        :rtype: bool
        """
        stack = []
        for c in s:
            if c == "(" or c == "{" or c == "[":
                stack.append(c)
            elif not stack:
                return False
            elif c == ")" and stack.pop() != "(":
                return False
            elif c == "}" and stack.pop() != "{":
                return False
            elif c == "]" and stack.pop() != "[":
                return False
        return not stack

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/66166.html

相關(guān)文章

  • [Leetcode] Longest Valid Parentheses 最長有效括號

    摘要:假設(shè)是從下標(biāo)開始到字符串結(jié)尾最長括號對長度,是字符串下標(biāo)為的括號。如果所有符號都是,說明是有效的。 Longest Valid Parentheses Given a string containing just the characters ( and ), find the length of the longest valid (well-formed) parentheses...

    everfight 評論0 收藏0
  • LeetCode 20:有效括號 Valid Parentheses

    摘要:給定一個(gè)只包括,,,,,的字符串,判斷字符串是否有效。有效字符串需滿足左括號必須用相同類型的右括號閉合。注意空字符串可被認(rèn)為是有效字符串。 給定一個(gè)只包括 (,),{,},[,] 的字符串,判斷字符串是否有效。 Given a string containing just the characters (, ), {, }, [ and ], determine if the inpu...

    TesterHome 評論0 收藏0
  • [leetcode]Longest Valid Parentheses

    摘要:在問題中,我們可以用來檢驗(yàn)括號對,也可以通過來檢驗(yàn)。遇到就加一,遇到就減一。找到一對括號就在最終結(jié)果上加。我們用來表示當(dāng)前位置的最長括號。括號之間的關(guān)系有兩種,包含和相離。 Longest Valid Parentheses Given a string containing just the characters ( and ), find the length of the lon...

    qujian 評論0 收藏0
  • leetcode32 Longest Valid Parentheses 最長括號組的長度

    摘要:題目要求原題地址一個(gè)括號序列,求出其中成對括號的最大長度思路一使用堆棧這題可以參考我的另一篇博客這篇博客講解了如何用堆棧判斷括號序列是否可以成對。我們可以將堆棧的思路延續(xù)到這里。在這里需要先遍歷一遍字符串,再遍歷一下非空的堆棧。 題目要求 原題地址:https://leetcode.com/problems... Given a string containing just the c...

    happyhuangjinjin 評論0 收藏0
  • LeetCode Easy】020 Valid Parentheses

    摘要:三種括號匹配問題,判斷參數(shù)字符串是否滿足匹配要求如空串為括號匹配問題是棧的典型應(yīng)用,遇到左括號,入棧,遇到右括號,看棧頂是否是相應(yīng)的左括號,若不是,則時(shí)間復(fù)雜度代碼如下思想是一樣的,不過沒有用棧這個(gè)數(shù)據(jù)結(jié)構(gòu),而是用了一個(gè)定長數(shù)組,對于參數(shù)的 Easy 020 Valid Parentheses Description: () [] {}三種括號匹配問題,判斷參數(shù)字符串是否滿足匹配要求如...

    Yangyang 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<