문자열 배열을 첫 번째 인수로, 문자열을 두 번째 인수로 취하는 JavaScript 함수를 작성해야 합니다.
함수는 배열의 문자열을 가능한 한 조합하여 두 번째 인수로 지정된 문자열을 구성할 수 있는지 여부를 확인해야 합니다.
예를 들어 - 입력 배열이 -
인 경우const arr = ["for","car","keys","forth"];
그리고 문자열은 -
const str = "forthcarkeys";
문자열은 배열의 3, 1 및 2 인덱스에 있는 요소의 조합이기 때문에 출력은 true여야 합니다.
예시
이에 대한 코드는 -
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