字符串的全排列和子集
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" );
}
}