字符串的全排列和子集
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Main {
/**
* 字符串子集
* @param s
*/
public static void getChildString(String s){
List<String >list=new ArrayList<>();
for (int i=0;i<s.length();i++){
list.add(s.charAt(i)+"");
}
getChildString(list,"");
}
public static void getChildString(List<String > list, String pre){
if (!"".equals(pre)){
System.out.println(pre);
}
for (int i=0;i<list.size();i++){
List<String >temp=new ArrayList<>(list);
String s=temp.remove(i).toString();
getChildString(temp.subList(i,temp.size()),pre+s);
}
}
public static boolean isSwap(List<String>list,int st,int en){
for (int i=st;i<en;i++){
if (list.get(i).equals(list.get(en))){
return false;
}
}
return true;
}
/**
* 消除重复的字符串全排列
* @param args
*/public static List<List <String>> perm=new ArrayList<List <String>>();
public static int count=0;
public static void Permutations(List<String>list,int st,int en){
if (st==en){
perm.add(new ArrayList<String>(list));
count++;
}else{
for (int i=st;i<en;i++){
if (isSwap(list,i,en-1)) {
Collections.swap(list, st, i);
Permutations(list, st + 1, en);
Collections.swap(list, st, i);
}
}
}
}
public static void main(String[] args) {
getChildString("abc");
}
}