输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
讲解
详细讲解
import java.util.ArrayList;
import java.util.Collections;
import java.util.ArrayList;
public class Solution {
public ArrayList<String> Permutation(String str) {
ArrayList<String> res=new ArrayList<String>();
if(str!=null && str.length()>0){
PermutationHelper(str.toCharArray(),0,res);
Collections.sort(res);
}
return res;
}
public void PermutationHelper(char[] cs, int i, ArrayList<String> list){
if(i==cs.length-1){
String temp=String.valueOf(cs);
if(!list.contains(temp)){
list.add(temp);
}
}else{
for(int j=i;j<cs.length;j++){
swap(cs,i,j);
PermutationHelper(cs,i+1,list);
swap(cs,i,j);
}
}
}
public void swap(char[] cs,int i,int j){
char ch=cs[i];
cs[i]=cs[j];
cs[j]=ch;
}
}
import java.util.ArrayList;
import java.util.Collections;
public class Solution {
ArrayList<String> list=new ArrayList<>();
public ArrayList<String> Permutation(String str) {
if(str==null || str.length()<=0){
return list;
}
fun(str.toCharArray(),0);
Collections.sort(list);
return list;
}
public void fun(char[] ch,int i){
if(i==ch.length-1){
if(!list.contains(new String(ch))){
list.add(new String(ch));
}
}else {
for(int j=0;j<ch.length;j++){
swap(ch,i,j);
fun(ch,i+1);
swap(ch,i,j);
}
}
}
public void swap(char[] ch,int i,int j){
char temp=ch[i];
ch[i]=ch[j];
ch[j]=temp;
}
}