leetcode25

題目

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

有效字符串需知足:java

左括號必須用相同類型的右括號閉合。 左括號必須以正確的順序閉合。 注意空字符串可被認爲是有效字符串。數組

題目分析

最好的方法是利用棧的數據結構來解決這個問題,也算是比較經典的解法。
先定義好一個hashmap數據結構

const map = new Map([
      [')', '('],
      ['}', '{'],
      [']', '['],
    ])
複製代碼

在定義一個空數組,依次遍歷字符串,若是匹配到了就消除該元素。循環結束若是數組依舊爲空,則全部括號都獲得了匹配,返回true,不然返回false。ui

代碼

var isValid = function(s) {
    const map = new Map([
      [')', '('],
      ['}', '{'],
      [']', '['],
    ])
    const stack = []
    for(let i = 0; i < s.length; i ++) {
      if(stack.length) {
        if(stack[stack.length - 1] === map.get(s[i])) {
          stack.pop()
        } else {
          stack.push(s[i])
        }
      } else {
        stack.push(s[i])
      }
    }
    if(stack.length) {
      return false
    }
    return true
};
複製代碼
相關文章
相關標籤/搜索