用了一个回溯的框架
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; } }