首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检测数字中的重复数字

检测数字中的重复数字
EN

Stack Overflow用户
提问于 2020-11-11 07:53:46
回答 2查看 127关注 0票数 0

我正在尝试构建一个以整数作为输入的方法。然后将该整数拆分为一位数,然后将它们存储在一个向量中。然后,我使用sort()对向量进行排序,这样就可以检测向量中的任何重复元素。在第一次重复时,我想返回True,如果没有重复,我想返回False。

代码语言:javascript
复制
#include <iostream>
#include <vector>
bool RepeatDigit(int number){
vector<int> temp;
while (number > 0){
    int digit = number % 10;
    number /= 10; 
    temp.push_back(digit);
}
sort(temp.begin(),temp.end());
for (int i = 0; i < temp.size() - 1; i++){
    if (temp[i] == temp[i+1]){
        return true;
        break;
    } else { 
        return false;
        break;
    }
}
return(0);
}

但当我在另一个方法中使用此方法来过滤if语句中的重复数字时:

代码语言:javascript
复制
if (numerator % n == 0 && RepeatDigit(numerator) == false){
//Do Stuff
}

它似乎不能正常工作,带有重复数字的数字似乎仍未被过滤掉。谁能告诉我问题出在哪里?或者有更简单的方法来执行这个操作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-11 08:03:00

删除你的else分支-它会导致你的循环在第一次迭代时中断,所以它只检查temp中的第一个数字是否重复。

此外,您可以简单地编写!RepeatDigit(numerator),而不是RepeatDigit(numerator) == false

票数 1
EN

Stack Overflow用户

发布于 2020-11-11 08:12:05

编辑:这个新函数实现了O(n)。它检查当前数字是否已被读取:

代码语言:javascript
复制
bool IsNumRepeating(int num)
{
    std::array<bool, 10> arr;
    for(; num > 0; num /= 10)
    {
        int digit = num % 10;
        if(arr[digit]) return true;
        arr[digit] = true;
    }

    return false;
}

或者,您可以将数字转换为std::string,然后检查重复字符(速度较慢):

代码语言:javascript
复制
bool IsNumRepeating(int num)
{
    std::string str = std::to_string(num);
    for(size_t i = 0; i < str.length(); i++)
    {
        if(std::count(str.begin(), str.end(), str[i]) > 1)
            return true;
    }

    return false;
}

示例:

代码语言:javascript
复制
int main()
{
    int num = 1234567891;
    bool check = IsNumRepeating(num);

    std::cout << "Is " << num << " repeating ?: " << (check ? "true" : "false") << std::endl;
    return 0;
}

输出:

代码语言:javascript
复制
Is 1234567891 repeating ?: true
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64778516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档