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