हमें एक JavaScript फ़ंक्शन लिखना आवश्यक है जो पहले तर्क के रूप में स्ट्रिंग्स की एक सरणी लेता है और दूसरे तर्क के रूप में एक स्ट्रिंग।
फ़ंक्शन को जांचना चाहिए कि क्या दूसरे तर्क द्वारा निर्दिष्ट स्ट्रिंग को सरणी की स्ट्रिंग्स को किसी भी संभावित तरीके से संयोजित करके बनाया जा सकता है।
उदाहरण के लिए − यदि इनपुट सरणी है −
const arr = ["for","car","keys","forth"];
और स्ट्रिंग है −
const str = "forthcarkeys";
तो आउटपुट true होना चाहिए, क्योंकि स्ट्रिंग सरणी के 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