Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตรวจสอบว่าหมายเลขโทรศัพท์มือถือที่ระบุเป็นแฟนซีใน C ++


เรามีเบอร์มือถือ 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