字符串全排列
T1: 字符串全排列
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
public class PermutationII {
public static void main(String[] args) {
String str = "aba";
ArrayList<String> list = permutation(str);
for(String i: list)
System.out.print(i + " ");
}
public static ArrayList<String> permutation(String str){
ArrayList<String> re = new ArrayList<String>();
if(str == null || str.length() == 0)
return re;
HashSet<String> set = new HashSet<String>();
fun(set, str.toCharArray(), 0);
re.addAll(set);
Collections.sort(re);
return re;
}
public static void fun(HashSet<String> re, char[] chas, int k){
if(k == chas.length){
re.add(new String(chas));
return;
}
for(int i = k; i < chas.length; i++){
swap(chas, i, k);
fun(re, chas, k+1);
swap(chas, i, k);
}
}
public static void swap(char[] chas, int i, int j){
if(i != j){
char tmp = chas[i];
chas[i] = chas[j];
chas[j] = tmp;
}
}
}
T2: 数组排成最小数(在Collections.sort中传入比较器)
if(arr == null || arr.length == 0)
return null;
TreeSet<String> set = new TreeSet<String>();
ArrayList<String> list = new ArrayList<String>();
String[] strs = new String[arr.length];
StringBuffer sb = new StringBuffer("");
for(int i = 0; i < arr.length; i++){
strs[i] = String.valueOf(arr[i]);
list.add(strs[i]);
}
Collections.sort(list, new Comparator<String>(){ // 使用匿名内部类在sort中传入比较器
public int compare(String str1, String str2){
String s1 = str1 + str2;
String s2 = str2 + str1;
return s1.compareTo(s2);
}
});
for(String i : list)
sb.append(i);
return sb.toString();

浙公网安备 33010602011771号