怎么利用位运算或其他简单的方法判断两个数是否含有相同的数字?

例如 123 324 两个数含有相同的数字2,输出为0;
224 567 中224有相同的数字2,输出为0;
怎么达到?

用一个10个元素的数组初始为0,把两数不断除以10的余数为数组下标对数组元素加1,判断数组元素大于1即可

你题目的解答代码如下:

#include<iostream>
using namespace std;

int main()
{
    int a[10] = {0};
    int n,m;
    cin >> n >> m;
    do {
        if (a[n%10]==0)
           a[n%10]++;
        n /= 10;
    } while (n>0);
    do {
        if (a[m%10]==1)
            cout << "两个数含有相同的数字" << m%10 << endl;
        m /= 10;
    } while (m>0);

    return 0;
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

回答:你这描述的题意好像不太清晰呀;如果两个数,即第一种情况,这基本得要一位一位判断了,对两边进行一位一位的比较,比较的时候可以简单利用数组进行比对,复杂度为平方级别,采用哈希表会快一些,为线性级别;
而对于下面的单独一个数字里面也算的话,就只能对于一个数进行按位挨个判断了,也能使用数组或者哈希表;
总体的结构,都支持哈希表和数组,需要分两步(或者整个放在一起,看你题目的具体意思)