用了一个回溯的框架
import java.util.ArrayList;
public class Solution {
public ArrayList<String> Permutation(String str) {
ArrayList<String> res = new ArrayList<>();
if(str==null||str.length()==0) return res;
char[] chs = str.toCharArray();
int start = 0;
helper(chs,start,res);
return res;
}
public void helper(char[] chs, int start, ArrayList<String> res){
if(start==chs.length){
if(!res.contains(String.valueOf(chs))) res.add(String.valueOf(chs));
}
for(int i=start; i<chs.length;i++){
swap(chs,i,start);
helper(chs, start+1, res);
swap(chs,i,start);
}
}
public void swap(char[] chs, int s, int e){
char t = chs[s];
chs[s] = chs[e];
chs[e] = t;
}
}


京公网安备 11010502036488号