一、题目内容
二、题解
解法1:
思路
全排列问题
代码
public class Solution { private ArrayList<String> ans = new ArrayList<String>(); char[] c; public ArrayList<String> Permutation(String str) { c = str.toCharArray(); recur(0); return ans; } /* a,b,c x=0 x=0 i=x=0 ==> i=1 */ private void recur(int x){ if(x == c.length -1 ){ ans.add(String.valueOf(c)); return; } HashSet<Character> set = new HashSet<>(); for(int i = x;i<c.length;i++){ if(set.contains(c[i])){ //局域剪枝 continue; } set.add(c[i]); swap(i,x); recur(x+1); swap(i,x); } } private void swap(int indexA,int indexB){ char temp = c[indexA]; c[indexA] = c[indexB]; c[indexB] = temp; }}