Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Cách lấy số lượng ký tự lặp lại liên tiếp nhiều nhất trong chuỗi JavaScript

Cho chuỗi có ký tự lặp lại liên tiếp. Viết hàm trả về số lần lặp lại liên tiếp tối đa của một ký tự.

Ví dụ: 'fdsfjngjkdsfhhhhhhhhhhhfsdfsd' → 'h' lặp 11 lần liên tiếp → trả về 11.

Sử dụng thuật toán cửa sổ trượt (sliding window): cửa sổ ổn định chứa ký tự liên tiếp, không ổn định khi gặp ký tự khác. Cửa sổ mở rộng bằng thêm ký tự cuối và thu hẹp bằng bỏ ký tự đầu trùng lặp.

Ví dụ

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));

Kết quả

Đầu ra trong console sẽ là:

11