আমাদের একটি ১০ ডিজিটের মোবাইল নম্বর আছে, আমাদের কাজ হল চেক করা নম্বরটি ফ্যান্সি নম্বর কিনা। ফ্যান্সি নম্বরের জন্য তিনটি শর্ত রয়েছে। যদি কমপক্ষে একটি সত্য হয়, তবে নম্বরটি ফ্যান্সি। শর্তগুলো:
- একটি একক সংখ্যা তিনবার liên tiếp আসে, যেমন 555
- তিনটি liên tiếp সংখ্যা ক্রমবর্ধমান বা ক্রমহ্রাসমান வரibles, যেমন 123 বা 321
- একটি একক ডিজিট নম্বরে চার বা অধিকবার আসে, যেমন 8965499259-এ ৯ চারবার এসেছে
ফ্যান্সি নম্বরের একটি উদাহরণ: 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";
return 0;
}
আউটপুট
This is fancy number