সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি স্ট্রিং str প্রথম আর্গুমেন্ট এবং একটি স্ট্রিং অ্যারে arr দ্বিতীয় আর্গুমেন্ট হিসেবে নেবে। ফাংশনটি গণনা করবে এবং ফেরত দেবে arr[i] কতগুলো str-এর সাবসিকোয়েন্স।
উদাহরণস্বরূপ, যদি ইনপুট হয় –
ইনপুট
const str = 'klmnop'; const arr = ['k', 'll', 'klp', 'klo'];
আউটপুট
const output = 3;
আউটপুট ব্যাখ্যা
কারণ 아직도 স্ট্রিংগুলো হল 'k', 'klp', এবং 'klo'।
উদাহরণ
নিচে কোডটি দেওয়া হল –
const str = 'klmnop';
const arr = ['k', 'll', 'klp', 'klo'];
const countSubstrings = (str = '', arr = []) => {
const map = arr.reduce((acc, val, ind) => {
const c = val[0];
acc[c] = acc[c] || [];
acc[c].push([ind, 0]);
return acc;
}, {});
let num = 0;
for (let i = 0; i < str.length; i++) {
if (map[str[i]] !== undefined) {
const list = map[str[i]];
map[str[i]] = undefined;
list.forEach(([wordIndex, charIndex]) => {
if (charIndex === arr[wordIndex].length - 1) {
num += 1;
} else {
const nextChar = arr[wordIndex][charIndex + 1];
map[nextChar] = map[nextChar] || [];
map[nextChar].push([wordIndex, charIndex + 1]);
}
});
}
}
return num;
};
console.log(countSubstrings(str, arr));
আউটপুট
3