【发布时间】:2020-03-10 20:59:50
【问题描述】:
我必须从控制台输入一个数字(int)并检查这个数字中的重复数字,但我不能使用数组,在这里我觉得很难。
谁能帮我写个代码?
【问题讨论】:
-
显示您尝试解决此问题的代码。如果没有您的代码,问题可能会在没有答案的情况下关闭。 minimal reproducible example
我必须从控制台输入一个数字(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);
}
}
}
【讨论】: