【问题标题】:Read an Integer as int and check for repeating digits将 Integer 读取为 int 并检查重复数字
【发布时间】:2020-03-10 20:59:50
【问题描述】:

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

谁能帮我写个代码?

【问题讨论】:

  • 显示您尝试解决此问题的代码。如果没有您的代码,问题可能会在没有答案的情况下关闭。 minimal reproducible example

标签: c++ int repeat digits


【解决方案1】:

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

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

【讨论】:

  • 感谢您的承诺。我只需要一个简单的代码,比如 2 个循环来检查数字中的任何数字是否重复,如果是,则需要打印一些东西。
  • @VasilSrbakov 没有数组如何存储数字?
猜你喜欢
  • 2014-07-25
  • 1970-01-01
  • 2014-04-30
  • 2016-02-12
  • 1970-01-01
  • 2019-03-17
  • 2020-11-30
  • 2014-07-19
  • 1970-01-01
相关资源
最近更新 更多