हमारे पास 10 अंकों का मोबाइल नंबर है, हमारा काम यह जांचना है कि नंबर फैंसी नंबर है या नहीं। फैंसी नंबर के लिए तीन अलग-अलग शर्तें हैं। यदि कम से कम एक सत्य है, तो संख्या फैंसी है। ये शर्तें नीचे की तरह हैं -
- एक नंबर लगातार तीन बार आता है, जैसे 555
- तीन क्रमागत संख्याएं या तो बढ़ते या घटते क्रम में हैं जैसे 123 या 321।
- एक अंक एक संख्या में चार या अधिक बार आता है, जैसे 8965499259, यहां 9 चार बार आया है।
फैंसी नंबर का एक उदाहरण 9859009976 है, यह एक फैंसी नंबर है क्योंकि तीसरी शर्त पूरी होती है।
हम संख्या को स्ट्रिंग के रूप में लेंगे, शर्त तीन के लिए, प्रत्येक संख्या की आवृत्ति की गणना करें, हैशिंग की एक मूल अवधारणा का उपयोग यहां किया गया है।
उदाहरण
#include <iostream> #define N 5 using namespace std; bool consecutiveThreeSameDigits(string s) { for (int i = 0; i < s.size() - 2; i++) { if (s[i] == s[i + 1] && s[i + 1] == s[i + 2]) return true; } return false; } bool incDecThree(string s) { for (int i = 0; i < s.size() - 2; i++) { if ((s[i] < s[i + 1] && s[i + 1] < s[i + 2]) || (s[i] > s[i + 1] && s[i + 1] > s[i + 2])) return true; } return false; } bool fourOccurrence(string s) { int freq[10]; for(int i = 0; i < 10; i++) freq[i] = 0; for (int i = 0; i < s.size(); i++) freq[s[i] - '0']++; for (int i = 0; i < 9; i++) if (freq[i] >= 4) return true; return false; } bool isFancyNumber(string s) { if (consecutiveThreeSameDigits(s) || incDecThree(s) || fourOccurrence(s)) return true; else return false; } int main() { string s = "7609438921"; if (isFancyNumber(s)) cout << "This is fancy number"; else cout << "This is not a fancy number"; }
आउटपुट
This is fancy number