首页 > 解决方案 > 将 Integer 读取为 int 并检查重复数字

问题描述

我必须从控制台输入一个数字(int)并检查这个数字中的重复数字,但我不能使用数组,在这里我觉得很难。

任何人都可以帮我提供代码吗?

标签: c++intrepeatdigits

解决方案


您可以使用整数来存储输入的数字:

#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);
        }
    }
}

推荐阅读