เรามีสตริงที่มีตัวอักษรซ้ำกันเช่นนี้ −
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