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