Algorithm

  1. 初始化stack
  2. 遍历字符串每个括号,如果是开括号,push到栈中。如果是闭括号,检查栈顶:如果栈顶是同类型开括号则将其从栈中
  3. 推出。否则,不是有效的表达式。
  4. 最后,如果栈不是空的,则表明是无效表达式。

Solution

var isValid = function(s) {
  if (s === null || s.length <= 0) return true;
  var cArr = s.split(' '); # split方法得到的元素会比分隔符多一个
  var stack = [];
  for (var c of cArr) {
    if (c === '[') stack.push(']');
    else if (c === '{') stack.push('}');
    else if (c === '(') stack.push(')');
    else if (stack.length === 0 || c !== stack.pop()) return false; 
  if (stack.length === 0) return true;
  return false;
};