在C ++中以大量显示所有3位数的重复数字
在这个问题上,我们得到了一个数字。并且我们必须打印所有3位数的重复数字。
让我们举个例子来了解这个问题,
Input: 98769876598765 Output: 987: 3 times 876: 3 times 765: 2 times
为了解决这个问题,我们将使用存储字符串的大量数字。数字的位数被视为字符。现在,我们将检查前三个数字,然后从第三个索引开始到最后一个数字。此后,我们将检查接下来的3位数字是否计数其频率。最后,打印频率大于1的所有3位数字。
示例
以下代码将实现我们的解决方案,
#include <bits/stdc++.h>
using namespace std;
void printRepeatingNumber(string s) {
int i = 0, j = 0, val = 0;
map <int, int> threeDigitNumber;
val = (s[0] - '0') * 100 + (s[1] - '0') * 10 + (s[2] - '0');
threeDigitNumber[val] = 1;
for (i = 3; i < s.length(); i++) {
val = (val % 100) * 10 + s[i] - '0';
if (threeDigitNumber.find(val) != threeDigitNumber.end()) {
threeDigitNumber[val] = threeDigitNumber[val] + 1;
} else {
threeDigitNumber[val] = 1;
}
}
for (auto number : threeDigitNumber) {
int key = number.first;
int value = number.second;
if (value > 1)
cout<<key<<": "<<value<<" times\n";
}
}
int main() {
string num = "98769876598765";
cout<<"All 3 digit repreating numbers are :\n";
printRepeatingNumber(num);
}输出结果
All 3 digit repeating numbers are − 765: 2 times 876: 3 times 987: 3 times