Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

จะรับจำนวนตัวอักษรซ้ำสูงสุดในสตริงได้อย่างไร? JavaScript


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

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