Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

หาจำนวนสูงสุดของตัวอักษรซ้ำติดกันในสตริง JavaScript

เรามีสตริงที่มีตัวอักษรซ้ำบ้างแบบนี้:

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