JavaScript LeetCode 20. Valid Parentheses

紀錄 LeetCode 20. Valid Parentheses 解題過程與思路

JavaScript LeetCode 20. Valid Parentheses
Photo by Jacek Dylag / Unsplash

判斷括號是否成對出現,這題應該用來判斷你對 stack 的靈敏度?大概想法就是用 stack 後進先出的機制來判斷是否前後成對。

/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function (s) {
  let map = {
    ")": "(",
    "}": "{",
    "]": "[",
  };
  let stack = [];
  if (s==='' || s.length % 2 !== 0) {
    return false;
  }
  for (let i = 0; i < s.length; i++) {
    const str = s[i];
    if (str in map) {
      const last = stack.pop()
      if (map[str] === last) {
        continue
      }
    }
    stack.push(str);
  }
  return stack.length === 0;
};

使用 continue 就可以略過 push 進 stack 不過缺點就是這樣要把迴圈跑完才能知道結果,感覺如果加上一個提早跳出的判斷,可能會讓 Runtime 提高。