做出最大的数
Make the largest number of the number
我尝试使输入的数字最大。有一些想法,但都以错误告终。
int n = 123 // in the end shell be 321, 567 -> 765, 184 -> 841
StringBuilder str = new StringBuilder(n.ToString());
int[] aray = new int[3];
for (int i = 0;i < str.Length;i++) {
aray[i] = int.Parse(str[i].ToString());
}
aray.OrderBy(x => x);
var a = aray.Join(' '); //eror
Console.WriteLine(a);
你有很多代码来完成一些非常简单的事情:
var ans = int.Parse(String.Concat(n.ToString().OrderByDescending(dc => dc)));
嗯,我们有两种情况:正数 和负数 数:
n = 43125 -> 54321
n = -43125 -> -12345
我们可以在 Linq 的帮助下处理这两种情况:
using System.Linq:
...
string result = string.Concat(n < 0
? n.ToString().OrderBy(c => c)
: n.ToString().OrderByDescending(c => c));
这里我们利用 '-' < '0'
的事实,并且在负数的情况下我们不必为 -
做任何特殊的工作。如果你想获得int
值,只需添加int.Parse
:
int result = int.Parse(string.Concat(n < 0
? n.ToString().OrderBy(c => c)
: n.ToString().OrderByDescending(c => c)));
但要小心:大n
会导致整数溢出:
n = 1234567890 -> 9876543210 > int.MaxValue
我尝试使输入的数字最大。有一些想法,但都以错误告终。
int n = 123 // in the end shell be 321, 567 -> 765, 184 -> 841
StringBuilder str = new StringBuilder(n.ToString());
int[] aray = new int[3];
for (int i = 0;i < str.Length;i++) {
aray[i] = int.Parse(str[i].ToString());
}
aray.OrderBy(x => x);
var a = aray.Join(' '); //eror
Console.WriteLine(a);
你有很多代码来完成一些非常简单的事情:
var ans = int.Parse(String.Concat(n.ToString().OrderByDescending(dc => dc)));
嗯,我们有两种情况:正数 和负数 数:
n = 43125 -> 54321
n = -43125 -> -12345
我们可以在 Linq 的帮助下处理这两种情况:
using System.Linq:
...
string result = string.Concat(n < 0
? n.ToString().OrderBy(c => c)
: n.ToString().OrderByDescending(c => c));
这里我们利用 '-' < '0'
的事实,并且在负数的情况下我们不必为 -
做任何特殊的工作。如果你想获得int
值,只需添加int.Parse
:
int result = int.Parse(string.Concat(n < 0
? n.ToString().OrderBy(c => c)
: n.ToString().OrderByDescending(c => c)));
但要小心:大n
会导致整数溢出:
n = 1234567890 -> 9876543210 > int.MaxValue