Computer >> Máy Tính >  >> Lập trình >> C ++

Kiểm tra xem một số điện thoại di động nhất định có lạ mắt trong C ++ hay không

Chúng tôi có một số điện thoại di động 10 chữ số, nhiệm vụ của chúng tôi là kiểm tra xem số đó có phải là số ưa thích hay không. Có ba điều kiện khác nhau cho một con số ưa thích. Nếu ít nhất một là đúng, thì con số này rất lạ. Các điều kiện này giống như bên dưới -

  • Một số xuất hiện ba lần liên tiếp, như 555
  • Ba số liên tiếp theo thứ tự tăng hoặc giảm như 123 hoặc 321.
  • Một chữ số duy nhất xuất hiện bốn lần trở lên trong một số, chẳng hạn như 8965499259, ở đây là số 9 đã xảy ra bốn lần.

Một ví dụ về số ưa thích là 9859009976, đây là một số ưa thích vì điều kiện thứ ba thỏa mãn.

Chúng tôi sẽ lấy số dưới dạng chuỗi, đối với điều kiện thứ ba, đếm tần suất của mỗi số, một khái niệm cơ bản về băm được sử dụng ở đây.

Ví dụ

#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";
}

Đầu ra

This is fancy number