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

ตัวอักษรที่ซ้ำติดต่อกันมากที่สุดในสตริงใน C++


ภาพรวมปัญหา

หาตัวอักษรที่มีการซ้ำติดต่อกัน (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