使用 JavaScript 检查字符串是否是由数组中的字符串组合而成


我们需要编写一个 JavaScript 函数,该函数将一个字符串数组作为第一个参数,将一个字符串作为第二个参数。

该函数应检查由第二个参数指定的字符串是否可以通过以任何可能的方式组合数组的字符串来形成。

例如,如果输入数组为

const arr = ["for","car","keys","forth"];

而字符串为

const str = "forthcarkeys";

则输出应为真,因为该字符串是数组中索引为 3、1 和 2 的元素的组合。

范例

代码如下

const arr = ["for","car","keys","forth"];
const str = "forthcarkeys";
const checkPossibility = (str = '', arr = []) => {
   let possibilities = arr.reduce(function (r, a) {
      let p = str.indexOf(a);
      while (p !== −1) {
         r.push({ word: a, position: p });
         p = str.indexOf(a, p + 1);
      }
      return r;
   }, []);
   const findRecursively = (i, t) => {
      let s = t.slice(), j;
      if (i === possibilities.length) {
         return !t.join('');
      }
      if (possibilities[i].word.split('').every(function (c, j) {
         return
         s[j + possibilities[i].position] !== ''; })) {
         for (j = 0; j < possibilities[i].word.length; j++) {
            s[j + possibilities[i].position] = '';
         }
      }
      return findRecursively(i + 1, s) || findRecursively(i + 1, t);
   }
   return findRecursively(0, str.split(''));
};
console.log(checkPossibility(str, arr));

输出

控制台中的输出为

true

更新于: 2020 年 11 月 24 日

131 次浏览

开启你的 职业

完成课程获得认证

开始
广告