JavaScript中return ['']的含义是什么?

时间:2018-10-12 00:20:20

标签: javascript arrays

请参阅此leetcode解决方案。在函数中,它返回[''],实际上返回一个答案数组。有人可以告诉我发生了什么事吗?

[问题已解决。实际上,它将在代码中间返回。]

https://leetcode.com/problems/remove-invalid-parentheses/discuss/154272/JavaScript-BFS-solution

function removeInvalidParentheses(s) {
 let queue = new Set([s]);
 while (queue.size) {
 const next = new Set();
for (let v of queue) {
  if (isValid(v)) {
    return [...queue].filter(isValid);
  }

  for (let i = 0; i < v.length; i++) {
    next.add(v.slice(0, i) + v.slice(i+1));
  }
}
 queue = next;
}
return [''];
}

function isValid(str) {
  let bal = 0;
  for (let ch of str) {
  if (ch === '(') {
    bal++;
    } else if (ch === ')') {
    bal--;
  }
  if (bal < 0) {
    return false;
  }
}
return bal === 0;
}

1 个答案:

答案 0 :(得分:1)

如果先前的代码(第7行)未返回结果,则该函数将返回一个包含单个空字符串的数组。它只是一个默认值,因此调用代码可以从该方法中看到一些结果。

function removeInvalidParentheses(s) {
  let queue = new Set([s]);
  while (queue.size) {
    const next = new Set();
    for (let v of queue) {
      if (isValid(v)) {
        return [...queue].filter(isValid);
      }

      for (let i = 0; i < v.length; i++) {
        next.add(v.slice(0, i) + v.slice(i+1));
      }
    }
    queue = next;
  }
  return [''];
}

function isValid(str) {
  let bal = 0;
  for (let ch of str) {
    if (ch === '(') {
      bal++;
    } else if (ch === ')') {
      bal--;
    }
    if (bal < 0) {
      return false;
    }
  }
  return bal === 0;
}