数组来解题
不知道如何判断重复数字
无重复输出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消位。然后求数组里有没有重复就行了