हमें एक JavaScript फ़ंक्शन लिखना है जो पहले तर्क के रूप में एक स्ट्रिंग और दूसरे तर्क के रूप में एक धनात्मक पूर्णांक n लेता है।
स्ट्रिंग में कुछ दोहराव वाले वर्ण होने की संभावना है। फ़ंक्शन को मूल स्ट्रिंग से सबसे लंबी उपस्ट्रिंग की लंबाई ढूंढकर वापस करनी चाहिए जिसमें सभी वर्ण कम से कम n बार आते हों।
उदाहरण के लिए -
यदि इनपुट स्ट्रिंग और संख्या हैं -
const str = 'kdkddj';
const num = 2;
तो आउटपुट होना चाहिए -
const output = 5;
क्योंकि वांछित सबसे लंबी उपस्ट्रिंग 'kdkdd' है।
उदाहरण
निम्नलिखित कोड देखें:
const str = 'kdkddj';
const num = 2;
const longestSubstring = (str = '', num) => {
if (str.length < num) {
return 0;
};
const map = {};
for (let char of str) {
if (char in map) {
map[char] += 1;
} else {
map[char] = 1;
}
}
const minChar = Object.keys(map).reduce((minKey, key) => map[key] < map[minKey] ? key : minKey);
if (map[minChar] >= num) {
return str.length;
};
substrings = str.split(minChar).filter((subs) => subs.length >= num);
if (substrings.length == 0) {
return 0;
};
let max = 0;
for (ss of substrings) {
max = Math.max(max, longestSubstring(ss, num));
};
return max;
};
console.log(longestSubstring(str, num));
आउटपुट
कंसोल आउटपुट निम्नलिखित है -
5