Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Kiểm tra chuỗi có phải là tổ hợp của các chuỗi trong mảng bằng JavaScript


Chúng ta cần viết một hàm JavaScript nhận một mảng chuỗi làm tham số đầu tiên và một chuỗi làm tham số thứ hai.

Hàm sẽ kiểm tra xem chuỗi được chỉ định bởi tham số thứ hai có thể được hình thành bằng cách kết hợp các chuỗi của mảng theo bất kỳ cách nào có thể.

Ví dụ – Nếu mảng đầu vào là:

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

Và chuỗi là:

const str = "forthcarkeys";

Thì đầu ra nên là true, vì chuỗi là tổ hợp của các phần tử ở chỉ số 3, 1 và 2 của mảng.

Ví dụ

Mã thực hiện:

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));

Kết quả

Kết quả trong console:

true