এই সমস্যায় একটি সংখ্যা দেওয়া আছে। এবং আমাদের সেটি থেকে সব ৩-অঙ্কের পুনরাবৃত্ত সংখ্যা প্রিন্ট করতে হবে।
উদাহরণ
ইনপুট: 98769876598765 আউটপুট: 987: 3 বার 876: 3 বার 765: 2 বার
এই সমস্যাটি সমাধানের জন্য বড় সংখ্যাটি স্ট্রিং হিসেবে সংরক্ষণ করা হবে। সংখ্যার অঙ্কগুলো ক্যারেক্টার হিসেবে গণনা করা হবে। প্রথম তিনটি অঙ্ক চেক করে তারপর ৩ নম্বর ইন্ডেক্স থেকে শেষ পর্যন্ত নতুন সংখ্যা তৈরি করা হবে। এরপর পরের ৩-অঙ্কের সংখ্যাগুলো চেক করে তাদের ফ্রিকোয়েন্সি গণনা করা হবে। শেষে যেসব ৩-অঙ্কের সংখ্যার ফ্রিকোয়েন্সি ১-এর বেশি সেগুলো প্রিন্ট করা হবে।
বাস্তবায়ন
#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 repeating numbers are :\n";
printRepeatingNumber(num);
return 0;
}
আউটপুট
All 3 digit repeating numbers are : 765: 2 times 876: 3 times 987: 3 times