判断小于九位数的数是否有重复数字

数组来解题
不知道如何判断重复数字
无重复输出yes
有重复输出no

#include<iostream>
#include<map>
using namespace std;
 
int main(){
    int tar_num ;
    map<int, bool> digits;
    cin>>tar_num;
    bool res = false;
    while(tar_num != 0){
        if(digits.count(tar_num % 10)){//判断当前的数字之前是否出现过
            res = true;
            break;
        }
        digits[tar_num%10] = true;
        tar_num = tar_num / 10;
    }
    if(res){
        cout<<"no"<<endl;
    }else{
        cout<<"yes"<<endl;
    }
    return 0;
}

参考代码如下

#include <iostream>
bool check(int n);
using namespace std;
int main()
{
    int num;
    cin>>num;
    int i;
    if (check(num)) cout<<"没重复"<<endl;
    else cout<<"重复了"<<endl;     
    return 0;
}
//判断是否有重复的数字
bool check(int num)
{
    int v[10]={0};//肯定是10,因为只有10个数字(0123456789),超过十个位的数字 肯定是有数字重复的 
    int i,sum=0,c=0; 
    while (num>0)
    {
        v[num%10]=1;//若有重复,则会在v数组的同一个元素处重复赋值1,这样 数组v的元素的总和就会比位数少 
        num=num/10;
        c++;//c用来计算位数 
    }
    for (i=0;i<10;i++)
        sum+=v[i];//计算数组v元素的总和 
    return (sum==c)?true:false;// 如果sum==c,即没有重复数字,返回true,否则返回false 
}

数为n,在while(n>9)里,用n%10弄出每位存到数组里,n/10消位。然后求数组里有没有重复就行了