将数组排序组成最小的整数
先逐位比较,如果都相等,则看哪个字符串长,将长的剩下的部分再继续和另外一个字符串比较,我这里运用递归。但是不知道为什么,结果有一点点不对,这是为什么呢???
public class CombineNumber { public static void main(String args[]){ String[] inputs={"3","83","8","13","1"}; ArrayList a=new ArrayList(); for(int i=0;i<inputs.length;i++) a.add(inputs[i]); a.sort(new Comparator(){ public int compare(Object o1, Object o2) { String s1=(String)o1; String s2=(String)o2; int len1=s1.length(); int len2=s2.length(); int k=len1-len2; for(int i=0;i<(k>0?len2:len1);i++){ if(s1.charAt(i)>s2.charAt(i)) return 1; if(s1.charAt(i)<s2.charAt(i)) return -1; } if(s1.length()>s2.length()){ //String str1; s1=s1.substring(len2); compare(s1,s2); } if(s1.length()<s2.length()){ // String str2; s2=s2.substring(len1); compare(s1,s2); } return 0; } }); a.toString(); System.out.println(a); } }
排序出来的结果是[13, 1, 3, 83, 8],正确的应该是1 13 3 83 8 ,相当于13和1排序的时候出错了。。。错在哪里???
每天进步一点点!