将数组排序组成最小的整数

先逐位比较,如果都相等,则看哪个字符串长,将长的剩下的部分再继续和另外一个字符串比较,我这里运用递归。但是不知道为什么,结果有一点点不对,这是为什么呢???

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排序的时候出错了。。。错在哪里???

 

posted @ 2015-03-19 23:16  berylqliu  阅读(225)  评论(0)    收藏  举报