Computer >> Máy Tính >  >> Lập trình >> C ++

In tất cả các số có 3 chữ số lặp lại với số lượng rất lớn trong C ++


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

Hãy lấy một ví dụ để hiểu vấn đề,

Input: 98769876598765
Output:
   987: 3 times
   876: 3 times
   765: 2 times

Để giải quyết vấn đề này, chúng tôi sẽ sử dụng số lớn được lưu trữ chuỗi. Các chữ số của các số được tính là ký tự. Bây giờ, chúng ta sẽ kiểm tra ba số đầu tiên và sau đó bắt đầu từ chỉ số thứ 3 đến cuối và nhận được một số mới. Sau đó, chúng ta sẽ kiểm tra xem 3 chữ số tiếp theo có được đếm tần số của nó hay không. Cuối cùng, in ra tất cả các số có 3 chữ số có tần số lớn hơn 1.

Ví dụ

Đoạn mã dưới đây sẽ triển khai giải pháp của chúng tôi,

#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<<" times\n";
   }
}
int main() {
   string num = "98769876598765";
   cout<<"All 3 digit repreating numbers are :\n";
   printRepeatingNumber(num);
}

Đầu ra

All 3 digit repeating numbers are −
765: 2 times
876: 3 times
987: 3 times