找出整数中最大的一对
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 /= 10
将 v
除以 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。
一个非常简单的解决方案如下:
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);
即,如果对大于当前最大值,将其设为新最大值 ...
我正在玩弄数字,我正在寻找一个小程序,它将 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 /= 10
将 v
除以 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。
一个非常简单的解决方案如下:
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);
即,如果对大于当前最大值,将其设为新最大值 ...