判断一个整数中是否有重复数字(0~9),该数字不以0开头--------方法1

本文介绍了一种通过遍历整数每位数字并使用数组记录已出现数字的方法来判断一个整数是否存在重复数字的算法实现。该方法适用于不超过十亿的整数,并确保整数不以0开头。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
  题目:判断一个整数中是否有重复数字(0~9),该数字不以0开头
  方法1:利用函数将数字从低位(个位)到高位进行分解,每分解一位,判断该数是否在0~9中出现,
  如果从未出现过该位数字,则将该数字下标对应字符设置为'x',表示该数字已经出现过。
  如果下次得到的另一个位的数为数字下标对应的字符为'x',表示此位数字再次出现,则返回false,
  表示这个整数中有重复数字。

*/

#include<iostream>  
#include<cstring>
using namespace std;  
 
bool checkNum(int n){  
    char arr[]="0123456789";  //数组下标整数值对应对应的整数字符
    do{  
        if(arr[n%10]<='9') //此位上的数是0~9的数,且从未出现过
  {  
            arr[n%10]='x';  //标记对应数字为已出现过,为'x'
        }else{   //第二次出现了
            return false;  
        }  
        n/=10;  //从个位开始循环判断各个位上数字
    }while(n!=0);  
    return true;  
}  

int main()
{
   int digit_10;
   cout<<"请输入10位数以内的整数:";
   while(cin>>digit_10&&digit_10<9999999999)
   {
   if(checkNum(digit_10))
    cout<<"此数中没有重复数字"<<endl;
   else
       cout<<"此数中存在重复数字"<<endl;
    cout<<"请输入10位数以内的整数";
   }
 return 0;
}


 

 

#include<iostream>  
#include<cstring>
using namespace std;  
 
bool checkNum(int n){  
    int arr[]={0,1,2,3,4,5,6,7,8,9};  //数组下标整数值对应对应的整数
    do{  
        if(arr[n%10]>=0&&arr[n%10]<=9) //此位上的数是0~9的数,且从未出现过
		{  
            arr[n%10]=-1;  //标记对应数字为已出现过,将数组元素值改为-1
        }else{   //第二次出现了
            return false;  
        }  
        n/=10;  //从个位开始循环判断各个位上数字
    }while(n!=0);  
    return true;  
}   

int main()
{
   int digit_10;
   cout<<"请输入10位数以内的整数:";
   while(cin>>digit_10&&digit_10<9999999999)
   {
   if(checkNum(digit_10))
	   cout<<"此数中没有重复数字"<<endl;
   else
       cout<<"此数中存在重复数字"<<endl;
    cout<<"请输入10位数以内的整数";
   }
 return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值