Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ตรวจสอบว่าสตริงเป็นการรวมกันของสตริงในอาร์เรย์โดยใช้ 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