- 问题描述
给定一个字符串数组,返回由该字符串数组组成的最小字典序字符串。
- 解决方案(贪心策略)
对字符串数组进行排序,排序的比较器比较规则为,若s1+s2的字典序小于s2+s1的字典序,则返回1,否则返回-1。
代码如下:
import java.util.Arrays;
import java.util.Comparator;
public class MinDictOrderOfStringJoint {
public static String minDictOrderOfStringJoint(String[] arr){
if(arr == null || arr.length == 0)
return "";
Arrays.sort(arr,new StringComparator());
StringBuffer sb = new StringBuffer();
for(int i = 0; i < arr.length;i ++){
sb.append(arr[i]);
}
return sb.toString();
}
}
class StringComparator implements Comparator<String> {
@Override
public int compare(String o1, String o2) {
return (o1 + o2).compareTo( o2 + o1);
}
}