इस समस्या में, हमें एक संख्या दी गई है और हमें उन सभी 3-अंकीय संख्याओं को प्रिंट करना है जो एक से अधिक बार आती हैं।
उदाहरण
Input: 98769876598765 Output: 987: 3 times 876: 3 times 765: 2 times
समाधान दृष्टिकोण
बड़ी संख्या को स्ट्रिंग के रूप में संग्रहीत करें। पहले तीन अंकों से पहली 3-अंकीय संख्या बनाएं। फिर 3वें इंडेक्स से अंत तक स्लाइडिंग विंडो का उपयोग करके प्रत्येक अगली 3-अंकीय संख्या की गणना करें और उसकी फ्रीक्वेंसी गिनें। अंत में, जिन संख्याओं की फ्रीक्वेंसी 1 से अधिक है, उन्हें प्रिंट करें।
C++ उदाहरण
#include <bits/stdc++.h>
using namespace std;
void printRepeatingNumber(string s) {
int i = 0, val = 0;
map<int, int> threeDigitNumber;
// पहली 3-अंकीय संख्या
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]++;
else
threeDigitNumber[val] = 1;
}
// परिणाम प्रिंट करें
for (auto number : threeDigitNumber) {
if (number.second > 1)
cout << number.first << ": " << number.second << " 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