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

In Tất Cả Số 3 Chữ Số Lặp Lại Trong Số Rất Lớn Trong C++


Trong bài toán này, chúng ta được cho một số. Nhiệm vụ là in tất cả các số 3 chữ số lặp lại.

Ví dụ để hiểu vấn đề:

Đầu vào: 98769876598765
Đầu ra:
987: 3 lần
876: 3 lần
765: 2 lần

Để giải quyết, ta dùng số lớn lưu dưới dạng chuỗi. Các chữ số được đếm như ký tự. Ta kiểm tra 3 số đầu, sau đó từ chỉ mục 3 đến cuối lấy số mới 3 chữ số. Kiểm tra các số 3 chữ số tiếp theo và đếm tần suất. Cuối cùng in tất cả số 3 chữ số có tần suất > 1.

Ví Dụ

Chương trình triển khai giải pháp:

#include <bits/stdc++.h>
using namespace std;

void printRepeatingNumber(string s) {
    int i = 0, j = 0, val = 0;
    map<int, int> threeDigitNumber;
    val = (s[0] - '0') * 100 + (s[1] - '0') * 10 + (s[2] - '0');
    threeDigitNumber[val] = 1;
    for (i = 3; i < s.length(); i++) {
        val = (val % 100) * 10 + s[i] - '0';
        if (threeDigitNumber.find(val) != threeDigitNumber.end()) {
            threeDigitNumber[val] = threeDigitNumber[val] + 1;
        } else {
            threeDigitNumber[val] = 1;
        }
    }
    for (auto number : threeDigitNumber) {
        int key = number.first;
        int value = number.second;
        if (value > 1)
            cout << key << ": " << value << " lần\n";
    }
}

int main() {
    string num = "98769876598765";
    cout << "Tất cả số 3 chữ số lặp lại là:\n";
    printRepeatingNumber(num);
    return 0;
}

Đầu Ra

Tất cả số 3 chữ số lặp lại là:
765: 2 lần
876: 3 lần
987: 3 lần