हमारे पास एक स्ट्रिंग है जिसमें इस तरह के कुछ दोहराए गए अक्षर हैं -
const a = "fdsfjngjkdsfhhhhhhhhhhhfsdfsd";
हमारा काम एक ऐसा फंक्शन लिखना है जो एस्ट्रीक में अधिकतम लगातार समान अक्षरों की गिनती लौटाता है। जैसा कि उपरोक्त स्ट्रिंग में अक्षर h लगातार 11 बार दिखाई देता है, इसलिए हमारे फ़ंक्शन को इस स्ट्रिंग के लिए 11 वापस करना चाहिए।
यह समस्या इस स्लाइडिंग विंडो एल्गोरिदम के लिए एक अच्छा उम्मीदवार है, यहां एक स्थिर विंडो होगी जिसमें लगातार अक्षर होते हैं और एक जिसमें विभिन्न तत्व होते हैं वह अस्थिर होता है। विंडो अंत में नए अक्षरों को जोड़कर और दोहराए जाने वाले अक्षरों को हटाकर स्थिर हो जाती है प्रारंभ करें।
स्लाइडिंग विंडो एल्गोरिथम का उपयोग करने वाले इस फ़ंक्शन का कोड होगा -
उदाहरण
const a = "fdsfjngjkdsfhhhhhhhhhhhfsdfsd";
const findMaximumRepeating = str => {
let max = 0;
for(let start = 0, end = 1; end < str.length; ){
if(str[end] === str[start]){
if(max < end - start + 1){
max = end - start + 1;
};
end++;
} else {
start = end;
};
};
return max;
};
console.log(findMaximumRepeating(a)); आउटपुट
कंसोल में आउटपुट होगा -
11