首页 > 代码库 > 拼接最小字典序
拼接最小字典序
转载请标明出处http://www.cnblogs.com/haozhengfei/p/63b2460bceae42e55f0c2d150bde663b.html
拼接最小字典序
拼接最小字典序练习
第8节 拼接最小字典序练习题
对于一个给定的字符串数组,请找到一种拼接顺序,使所有小字符串拼接成的大字符串是所有可能的拼接中字典序最小的。
给定一个字符串数组strs,同时给定它的大小,请返回拼接成的串。
测试样例:
["abc","de"],2
"abcde"
1
import java.util.*;
2
3
public class Prior {
4
public String findSmallest(String[] strs, int n) {
5
// 这里使用插入排序
6
for (int i = 1; i < strs.length; i++) {
7
// 当前需要排序的元素
8
String target = strs[i];
9
// j标记当前位置
10
int j = i;
11
while(j>0 && (target+strs[j-1]).compareTo(strs[j-1]+target) < 0){
12
strs[j] = strs[j-1];
13
j--;
14
}
15
strs[j] = target;
16
}
17
StringBuffer sb = new StringBuffer();
18
for(String str: strs){
19
sb.append(str);
20
}
21
return sb.toString();
22
}
23
//方法二,使用Arrays.sort()方法
24
public String findSmallest2(String[] strs, int n) {
25
if(strs == null){
26
return null;
27
}
28
29
Comparator<String> c = new Comparator<String>() {
30
31
public int compare(String str1, String str2) {
32
String str1first = str1 + str2;
33
String str2first = str2 + str1;
34
35
return str1first.compareTo(str2first);
36
}
37
};
38
39
Arrays.sort(strs, c);
40
41
StringBuffer str = new StringBuffer();
42
for(int i = 0; i < n; i++){
43
str.append(strs[i]);
44
}
45
46
return str.toString();
47
}
48
}
您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例
答案正确:恭喜!您提交的程序通过了所有的测试用例
拼接最小字典序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。