110,537
社区成员
发帖
与我相关
我的任务
分享
static int makemax(int value)
{
// 排除负数的情况
if (value < 0)
throw new ArgumentOutOfRangeException("value");
// 一共才1位,直接返回
if (value < 10)
return value;
// value的最大值是2G-1,也就是最多10位数
int[] buf = new int[10];
int count = 0;
while (value>0)
{
buf[count++] = value % 10;
value /= 10;
}
Array.Sort(buf, 0, count);
int result = 0;
for (int i = count - 1; i >= 0; i--)
{
checked //可能会溢出,例如输入1111111119
{
result *= 10;
result += buf[i];
}
}
return result;
}
static int Makemax(int n)
{
int result = 0;
char[] nums = n.ToString().ToCharArray();
Array.Sort(nums);
for (int i = nums.Length-1; i >=0; i--)
{
result = result * 10 +int.Parse( nums[i].ToString());
}
return result;
}