如何计算两个整数的相似度?

And*_*air 5 c#

实际上很难描述:
我想实现一个算法,它比较两个给定整数/数字的相同位置的数字(就像我在基于10的系统中的计算,它是相同的"10的幂") (具有相同的"长度").它应该返回平等等级如下:

  • 4491和1020 = 0
  • 4491和4123 = 1
  • 4491和4400 = 2
  • 4491和4493 = 3
  • 4491和4491 = 4
  • 4491和4091 = 1

我不想基于字符串比较进行计算,因为我会以更大的方式做这个:)

max*_*max 3

public static int Compare(int i1, int i2)
{
    int result = 0;
    while(i1 != 0 && i2 != 0)
    {
        var d1 = i1 % 10;
        var d2 = i2 % 10;
        i1 /= 10;
        i2 /= 10;
        if(d1 == d2)
        {
            ++result;
        }
        else
        {
            result = 0;
        }
    }
    if(i1 != 0 || i2 != 0)
    {
        throw new ArgumentException("Integers must be of same length.");
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

注意:它不处理负整数

更新:问题更新后修复

  • 好吧,它没有被处理(尽管它很容易添加)。OP 没有为这种情况定义任何行为,所以我只会抛出一个异常。 (2认同)