c++ - 将 Integer 读取为 int 并检查重复数字
问题描述
我必须从控制台输入一个数字(int)并检查这个数字中的重复数字,但我不能使用数组,在这里我觉得很难。
任何人都可以帮我提供代码吗?
解决方案
您可以使用整数来存储输入的数字:
#include <cstdint>
#include <iostream>
class DigitContainer {
public:
bool contains(std::uint8_t digit) {
return container & 1 << digit;
}
void set(std::uint8_t digit) {
container |= 1 << digit;
}
private:
std::uint16_t container{};
};
int main() {
DigitContainer keyPress;
DigitContainer printed;
std::uint64_t number;
std::cin >> number;
std::cout << "Repeated:\n";
for (; number; number /= 10) {
std::uint8_t digit = number % 10;
if (keyPress.contains(digit)) {
if (!printed.contains(digit)) {
std::cout << static_cast<int>(digit) << "\n";
printed.set(digit);
}
} else {
keyPress.set(digit);
}
}
}
推荐阅读
- python - 如何在 selenium 和 python 程序之间切换?
- javascript - 如何等待函数在for循环js中完成?
- macos - 有没有办法在两个不同的用户帐户(macOS)上安装单独版本的 anaconda?
- javascript - 如何从给定数组中选择包含子字符串的所有条目?
- sip - 如何确保 BYE 消息绕过 SIP 代理?
- powerbi - 使用当前行值对 Power BI 中具有匹配列名的表执行计算?
- postgresql - PostgreSQL - “预期光标”
- octave - 如何读取由“”分隔但包含逗号的十进制数字的数据
- excel - 如何将范围定义为变量以用作 Excel 工作表函数的参数?
- angular6 - 路由器找不到组件