C ++:在数字中查找特定数字

C++: finding a specific digit in a number

有人请指导我如何检查 integer 中是否存在特定数字。 为了代码优化,我试图避免使用 strings 或任何类型的 loops 来遍历所有 digits integer

如果我需要找出4是否存在于整数中,输入和输出样本如下:

示例输入:

154

示例输出:

true

所需代码:

bool ifExists(int digit, int number)
{
    if()
    {
        return true;
    }
    else
    {
        return false;
    }
}

可能的逻辑:

我相信一定有一种数学方法可以在if条件下完成工作,但是我无法在cmath中找到这样的方法]图书馆。

将整数转换为字符串,在字符串中搜索数字。


"mathematical" 方法必须做同样的事情,通过 division/remainder 计算数字序列乘以 10 并与给定数字进行比较。

我认为可以采用数学方法。通过以某种疯狂的方式使用 log(x)。

但是你肯定应该使用字符串或除以 10 的循环。log(x) 需要的资源远远超过你想要使用的方式。

此外,字符串或除以 10 比数学解决方案更容易阅读。

求数学解。

我建议您尝试将十进制数转换为二进制表示形式。然后可以为您要查找的数字创建过滤器。通过按位连接过滤器和转换后的值 & 你可以得到你想要的。我不确定这是否真的可行,但这将是我的第一个想法。

但正如我之前所说。这种方法对于 cpu 来说会非常昂贵并且难以阅读。