Tìm kí tự giống nhau liên tiếp trong một chuỗi

Nhập vào một chuỗi và đưa ra các kí tự giống nhau và đưa ra độ dài dài nhất, nếu có độ dài giống nhau thì in cái đầu tiên
Ví dụ: Input là 166778 thì output là 66
Input là 1002224 thì output là 222
Input là 002220222 thì output là 222
Input là 16777662 thì output là 777
Ai giúp e bài này với ạ

Vòng lặp
Nếu 2 kí tự liền kề mà giống nhau
Vòng lặp so sánh đến khi không còn giống
Lưu lại độ dài của chuỗi đó

Nếu chuỗi mới dài hơn chuỗi hiện tại, update độ dài tối đa
1 Like

Làm sao để tách những chuỗi string giống nhau ra để lưu dc ạ

Đề chỉ nói in ra chứ có bắt lưu vào đâu. :slight_smile:

Xài 2 con chạy, một mốc và một biến lưu độ dài lớn nhất. :slight_smile:

#include <stdio.h>

void func(const char *s) {
    int m = 0, len = 0;
    for (int i = 0, j = 1; s[i] && s[j - 1]; ++j) {
        if (s[i] == s[j]) continue;
        if (len < j - i) {
            len = j - i;
            m = i;
        }
        i = j;
    }
    
    for (int i = m; i < m + len; ++i) putchar(s[i]);
}

int main() {
    char s[] = "16777662";
    func(s);
    return 0;
}
3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?