把一个字符串数组拼接出一个字典序最小的字符串

给定一个字符串数组,把数组的所有字符串拼接,找到拼接后字典序最小的字符串。

public class LowestLexicography {
	//自定义比较器
	public static class MyComparator implements Comparator<String>{
		//通过(str1+str2)与(str2+str1)来判断那个字符串在前,哪个在后
		@Override
		public int compare(String o1, String o2) {
			return (o1+o2).compareTo(o2+o1);
		}
		
	}
	//根据比较器对字符串数组排序,最后再拼接。
	public static String lowestString(String[] strs) {
		if(strs==null||strs.length==0)
			return "";
		Arrays.sort(strs, new MyComparator());
		StringBuffer res=new StringBuffer(""); 
		for(int i=0;i<strs.length;i++) {
			res.append(strs[i]);
		}
		return String.valueOf(res);
	}
	public static void main(String[] args) {
		String[] strs1 = { "jibw", "ji", "jp", "bw", "jibw" };
		System.out.println(lowestString(strs1));

		String[] strs2 = { "ba", "b" };
		System.out.println(lowestString(strs2));

	}

}

你可能感兴趣的:(算法)