/*
题目描述:输入一个字符串,打印出该字符串的所有排列。例如,输入字符串”abc”,则输出有字符’a’,’b’,’c’所能排列出来的所有字符串”abc”,”acb”,”bac”,”bca”,”cab”,”cba”。
思路解析:递归法
* 从集合中依次选出每一个元素,作为排列的第一个元素,然后对剩余的元素进行全排列,如此递归处理,从而得到所有元素的全排列。
* 以对字符串abc进行全排列为例,我们可以这么做:
1)固定a,求后面bc的排列:abc,acb;
2)固定b,求后面ac的排列:bac,bca;
3)固定c,求后面ba的排列:cba,cab;
即递归树:
str: a b c
ab ac ba bc ca cb
result: abc acb bac bca cab cba
参考链接:https://www.cnblogs.com/lifegoesonitself/p/3225803.html
*/
public class Main{
public static void main(String[] args){
String s="abc";
String result="";
search(s,result,s.length());
}
public static void search(String s,String result,int len){
if(result.length()==len){ //表示遍历完了一个全排列结果
System.out.println(result);
}
else{
for(int i=0;i<len;i++){
if(result.indexOf(s.charAt(i))<0){ //返回指定字符在此字符串中第一次出现处的索引。
search(s,result+s.charAt(i),len);
}
}
}
}
}
参考链接:https://www.cnblogs.com/lifegoesonitself/p/3225803.html