เรามีสตริงที่มีตัวอักษรซ้ำบ้างแบบนี้:
const a = "fdsfjngjkdsfhhhhhhhhhhhfsdfsd";
หน้าที่ของเราคือเขียนฟังก์ชันที่คืนค่าจำนวนสูงสุดของตัวอักษรเดียวกันที่ซ้ำติดกันในแถว เช่นในสตริงข้างต้น ตัวอักษร h ปรากฏ 11 ครั้งติดกัน ดังนั้นฟังก์ชันควรคืน 11
ปัญหานี้เหมาะกับ sliding window algorithm ที่หน้าต่างเสถียรคือหน้าต่างที่มีตัวอักษรติดกัน และหน้าต่างที่ไม่เสถียรคือที่มีองค์ประกอบต่างกัน หน้าต่างจะพยายามเสถียรโดยเพิ่มตัวอักษรใหม่ท้ายและลบตัวซ้ำหัว
โค้ดสำหรับฟังก์ชันนี้ที่ใช้ sliding window algorithm จะเป็นดังนี้:
ตัวอย่างโค้ด
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