在这个问题中,我们必须对元素进行排序,但是该元素采用biginteger格式,因此我已经做了一些努力,但是由于超时而无法通过某些测试用例,所以请建议我如何降低时间复杂度。
static String[] bigSorting(String[] unsorted) {
BigInteger big[]=new BigInteger[unsorted.length];
String str[]=new String[unsorted.length];
for(int i=0;i<unsorted.length;i++)
{
big[i]=new BigInteger(unsorted[i]);
}
Arrays.sort(big);
for (int i = 0; i < unsorted.length; i++) {
StringBuffer sb = new StringBuffer("");
str[i]=sb.append(big[i]).toString();
}
return str;
}
答案 0 :(得分:2)
我完全不会将字符串转换成BigIntegers。这样做是为了对字符串的整数值进行排序。以下假设所有字符串都包含正数或0个BigInteger值,即没有负数。否则,代码会变得更加复杂(WRT的长度)。
我将使用自定义比较器直接对字符串数组进行直接排序:
public class BIComp implements Comparator<String>
{
public int compare(String s1, String s2)
{
if (s1.length() > s2.length())
return 1;
else if (s1.length() < s2.length())
return -1;
else
return s1.compareTo(s2);
}
}
...
Arrays.sort(str, new BIComp());