20.有效的括號

題目描述:
給定一個只包括 '(',')','{','}','[',']' 的字符串 s ,判斷字符串是否有效。
有效字符串需滿足:

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

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

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

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

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

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

提示:

  • 1 <= s.length <= 10^4
  • s 僅由括號 '()[]{}' 組成

進階:你能不將整數(shù)轉(zhuǎn)為字符串來解決這個問題嗎?

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/valid-parentheses

思路:

  • 用到了棧的思想

代碼:

var isValid = function(s) {
    let i,j=0,len=s.length,arr=new Array();
    for(i=0;i<len;i++){
        if(Map[s[i]]>=1&&Map[s[i]]<=3){
            arr[j++]=Map[s[i]];
        }else if(arr.length!=0&&Map[s[i]]==(arr[arr.length-1]+3)){
            arr.pop();//刪除數(shù)組的最后一個元素
            j--;
        }else{
            return false;
        }
    }
    if(arr.length == 0)
        return true;
    else
        return false;
};
const Map = {
    '(':1,
    '[':2,
    '{':3,
    ')':4,
    ']':5,
    '}':6
}

執(zhí)行結果:

image.png

改進解法:
思路:

  • 優(yōu)化了映射對象

代碼:

var isValid = function(s) {
    const stack = [],
          map = {
            "(":")",
            "{":"}",
            "[":"]"
          }
    for(const i of s){
        if(i in map){
            stack.push(i);
        }else if(i!=map[stack.pop()]){
            return false;
        }
    }
    return !stack.length;
};

執(zhí)行結果:

image.png

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容