在 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
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP