ภาพรวมปัญหา
หาตัวอักษรที่มีการซ้ำติดต่อกัน (consecutive repeating) ยาวที่สุดในสตริง
ตัวอย่าง
Input: "abbbabbbbcdd" Output: b Explanation: 'b' ซ้ำติดต่อกัน 4 ครั้ง (bbbb) Input: "aabbcdeeeeed" Output: e Explanation: 'e' ซ้ำติดต่อกัน 5 ครั้ง (eeeee)
แนวทางแก้ปัญหา
- วนลูปสตริง เปรียบเทียบตัวอักษรปัจจุบันกับตัวถัดไป
- นับจำนวนที่ซ้ำติดต่อกัน
- เก็บตัวอักษรและจำนวนสูงสุด
ตัวอย่างโค้ด C++
#include <iostream>
char maxRepeating(char str[], int n) {
int count = 0;
char repchar = str[0];
int maxC = 1;
for (int i = 0; i < n; i++) {
if (str[i] == str[i+1] && i < n-1)
maxC++;
else {
if (maxC > count) {
count = maxC;
repchar = str[i];
}
maxC = 1;
}
}
return repchar;
}
int main() {
char string1[] = "aaabbaacccddef";
int N = 14;
cout << "Max consecutive repeating char: " << maxRepeating(string1, N);
return 0;
}
ผลลัพธ์
Maximum Consecutive repeating character in string: a