我正在努力从leetcode解决这个问题 https://leetcode.com/problems/largest-number/description/
我正在寻找解决方案,并注意到当输入为数字时输入为字符串(静止数字)时,排序的行为会有所不同。
输入:
[3,30,34,5,9]
代码:
String[] numstoString = new String[nums.length];
for(int i=0;i<nums.length;i++){
numstoString[i] = Integer.toString(nums[i]);
}
Arrays.sort(numstoString);
Arrays.sort(nums);
System.out.println(Arrays.toString(nums));
System.out.println(Arrays.toString(numstoString));
输出:
[3, 5, 9, 30, 34]
[3, 30, 34, 5, 9]
有人可以告诉我,在排序方面,“数字”与数字有什么不同。
答案 0 :(得分:2)
数字排序与字符串排序不同,当您对数字进行排序时,实际上是在比较其中的值3 < 5 < 9 < 30 < 34
,但是当将它们转换为字符串时,字符串分区通过将它们转换为ASCII值逐字符发生, 34 < 5
因为第一个数字3 < 5
答案 1 :(得分:0)
如果您的int[]
数字值用于对列表进行排序,那么5&lt; 9&lt; 30 ...
如果String[]
,则使用字符串中每个字符的数值进行比较。所以&#34; 30&#34;来自&#34; 5&#34;因为&#34; 3&#34;的ASCII值低于&#34; 5&#34;。