समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो एक स्ट्रिंग, 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