一、分析
二、解法
import java.util.*;
public class Solution {
public ArrayList<String> Permutation(String str) {
ArrayList<String>arrayList=new ArrayList<>();
if(str==null||str.length()==0)
{
return arrayList;
}
//调用递归函数
PermutationHelp(str.toCharArray(),0,arrayList);
Collections.sort(arrayList);
return arrayList;
}
//递归的思想解题
public void PermutationHelp(char[]chs,int i,ArrayList<String>Arraylist){
if(i==chs.length-1)
{
String val=String.valueOf(chs);
if(!Arraylist.contains(val)) //不包含这种排列的字符串
Arraylist.add(val);
}else{
for(int j=i;j!=chs.length;j++){
swap(chs,i,j);
PermutationHelp(chs,i+1,Arraylist);//递归调用
swap(chs,i,j);
}
}
}
//交换两个字符串的值
public void swap(char[]ch,int i,int j){
char temp=ch[i];
ch[i]=ch[j];
ch[j]=temp;
}
public static void main(String[]args){
//System.out.println("Hello");
Solution s=new Solution();
String str="abc";
ArrayList<String>arr=s.Permutation(str);
int i=0;
for(String str2:arr){
++i;
System.out.println(str2);
}
System.out.println(i);
}
}