比较数字和查找具有相同数字的数字

时间:2015-11-17 17:05:06

标签: c++

这是我的问题。程序需要打印m和n之间的数字,这些数字有不同的数字。例如:m = 97,n = 104;输出:5.我似乎有问题通过比较数字并找到一种方法来检查是否有2个相同的数字。这是我迄今为止写的:

enter code here
#include <iostream>

using namespace std;

int main()

{

    int m, n;

    cout << "m=";
    cin >> m;
    cout << "n=";
    cin >> n;
    for (int i = m; i <=n; ++i)
    {
        if (i >= m && i <= n)
        {
            while (i > 0)
            {
                m=i%=10;
                i/= 10; 

                cout << m;
            }
        }
    }
    system("pause");
    return 0;
}

如果你能给我最简单的解决方案。谢谢你提前

1 个答案:

答案 0 :(得分:0)

最好的方法是将其分为两部分。主要部分负责增加数字集(如果变量是整数,这是最简单的),第二部分是比较数字的每个部分,以查看是否重复了一个数字(最好以字符串形式完成)。

首先,我将定义负责确定该值是否具有所有不同数字的方法:

bool hasDistinctDigits(int m) {
    string number = to_string(m);

    for (string::size_type i = 0; i < number.size(); i++) {
        for (string::size_type j = i + 1; j < number.size(); j++) {
            if (number[i] == number[j]) return false;
        }
    }

    return true;
}

这应该很容易理解。首先,我们需要将数字转换为字符串。然后我们使用2个循环来确定字符是否在更高的索引中重复。例如,对于数字102,它将比较以下几组:{1,0},{1,2},{0,2}

然后在main函数中,我会这样称呼它:

int main()
{
    int m, n, matched = 0;

    cout << "m=";
    cin >> m;
    cout << "n=";
    cin >> n;

    for (int current = m; current <= n; ++current){
        if (hasDistinctDigits(current)) {
            cout << current << " is distinct" << endl;
            matched++;
        }
    }

    cout << "Total Matched: " << matched << endl;
    system("pause");

    return 0;
}