इस समस्या में हमें एक नंबर दिया जाता है। और हमें सभी 3 अंकों की दोहराई जाने वाली संख्याओं को प्रिंट करना होगा।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
Input: 98769876598765 Output: 987: 3 times 876: 3 times 765: 2 times
इस समस्या को हल करने के लिए, हम बड़ी संख्या का उपयोग करेंगे जो संग्रहीत स्ट्रिंग है। संख्याओं के अंकों को वर्णों के रूप में गिना जाता है। अब, हम पहले तीन नंबरों की जांच करेंगे और फिर तीसरे इंडेक्स से अंत तक शुरू करेंगे और एक नया नंबर प्राप्त करेंगे। इसके बाद, हम जांच करेंगे कि अगले 3 अंकों की संख्या इसकी आवृत्ति की गणना कर रहे हैं। अंत में, उन सभी 3 अंकों की संख्याएं प्रिंट करें जिनकी आवृत्ति 1 से अधिक है।
उदाहरण
नीचे दिया गया कोड हमारे समाधान को लागू करेगा,
#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); }
आउटपुट
All 3 digit repeating numbers are − 765: 2 times 876: 3 times 987: 3 timesहैं