找出整数中最大的一对

Find the largest Pair in an integer

我正在玩弄数字,我正在寻找一个小程序,它将 return 传入的整数的最大两位数,例如:

我通过2215487 它应该 return 87

我通过98765499 应该 return 99

我试过查看 Math.Max,但我不认为那是我要找的东西,除非我忽略了它

可以每次除以10,然后比较余数除以100的余数。例如:

int v = 98765499;
int m = 0;
v = Math.Abs(v); // negate negative numbers so that we can process these too
while (v >= 10) // if you want to accept single digit initial values for V change this to v > 0
{
    m = Math.Max(m, v % 100);
    v /= 10;
}
Console.WriteLine(m);

我们使用 v >= 10 是因为我们不想考虑 single-digit 个数字(例如初始值 v = 5)。

v % 100 使用 remainder operator 得到除以 100 后的剩余值。

v /= 10v 除以 10 并将结果存储在 v.

我已经使用 Math.Abs( ) 使负数也能正常工作,但如果您只关心正数,则可以删除此行。

最后,m 将保留 0(对于单个数字或零)或最高的 two-digit 值。


示例执行流程:

Initial V V % 100 New V
98765499 99 9876549
9876549 49 987654
987654 54 98765
98765 65 9876
9876 76 987
987 87 98
98 98 9

最高 v % 100 是 99。


Try it online

一个非常简单的解决方案如下:

    var thenumber = 987654990;
    var s = thenumber.ToString();
    var max = 0;
    for (var i = 0; i < s.Length-1; i++) {
        int d1 = (int)(s[i] - '0');
        int d2 = (int)(s[i+1] - '0');
        max = Math.Max(max, 10*d1+ d2);
    }
    Console.WriteLine(max);

即,如果对大于当前最大值,将其设为新最大值 ...