You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中如何比较数组未知数量元素?判断输入数字是否有重复数位

判断数字数位是否存在重复的C++实现

方法一:基于你现有代码的改进

你已经成功提取了数字的每一位到analyse数组中,接下来只需要检查数组内是否有重复元素即可。可以用双重循环实现:外层循环遍历每个数位,内层循环遍历当前数位之后的所有数位,一旦发现相等值,就说明存在重复。

修改后的完整代码如下:

#include<iostream>
int main(){
    int number, number_help;
    std::cin>>number;
    number_help = number ;
    int digitcount{0};
    while(number_help>0){
        number_help/=10;
        digitcount+=1;
    }
    int analyse[digitcount]{};
    int temp_num = number; // 用临时变量存原数字,避免修改原number影响后续
    for(size_t i {0}; i<digitcount ; i++){
        analyse[i] = temp_num%10;
        temp_num/=10;
    }

    // 检查重复的逻辑
    bool has_duplicate = false;
    for(int i = 0; i < digitcount; i++){
        for(int j = i + 1; j < digitcount; j++){
            if(analyse[i] == analyse[j]){
                has_duplicate = true;
                // 找到重复后直接跳出所有循环
                goto end_check;
            }
        }
    }
end_check:
    if(has_duplicate){
        std::cout << "该数字的数位存在重复" << std::endl;
    } else {
        std::cout << "该数字的数位没有重复" << std::endl;
    }
    return 0;
}

方法二:更高效的实现(无需统计位数)

其实不需要先统计位数再存储数位,因为数字的每一位只能是0-9这10个数字,我们可以用一个布尔数组记录每个数字是否已经出现过。每次取当前数字的最后一位,检查对应的标记是否为true:如果是,说明重复;否则标记为true,然后把数字除以10继续处理,直到数字变为0。

这种方法时间复杂度更低,代码也更简洁:

#include<iostream>
int main(){
    int number;
    std::cin >> number;
    // 处理0的特殊情况
    if(number == 0){
        std::cout << "该数字的数位没有重复" << std::endl;
        return 0;
    }
    // 转为正数处理负数情况
    if(number < 0){
        number = -number;
    }
    bool digit_seen[10] = {false}; // 初始所有数字都未出现过
    bool has_duplicate = false;
    while(number > 0){
        int digit = number % 10;
        if(digit_seen[digit]){
            has_duplicate = true;
            break;
        }
        digit_seen[digit] = true;
        number /= 10;
    }
    if(has_duplicate){
        std::cout << "该数字的数位存在重复" << std::endl;
    } else {
        std::cout << "该数字的数位没有重复" << std::endl;
    }
    return 0;
}

补充说明

  • 第二种方法不需要额外统计位数,也不需要存储所有数位,空间和时间效率都更高。
  • 代码中加入了负数处理逻辑,确保输入负数时也能正确判断。

内容的提问来源于stack exchange,提问作者Mhz_rkx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:40:23