一、题目内容

image.png

二、题解

解法1:

思路

全排列问题
image.png

代码

  1. public class Solution {
  2. private ArrayList<String> ans = new ArrayList<String>();
  3. char[] c;
  4. public ArrayList<String> Permutation(String str) {
  5. c = str.toCharArray();
  6. recur(0);
  7. return ans;
  8. }
  9. /*
  10. a,b,c
  11. x=0 x=0
  12. i=x=0 ==> i=1
  13. */
  14. private void recur(int x){
  15. if(x == c.length -1 ){
  16. ans.add(String.valueOf(c));
  17. return;
  18. }
  19. HashSet<Character> set = new HashSet<>();
  20. for(int i = x;i<c.length;i++){
  21. if(set.contains(c[i])){
  22. //局域剪枝
  23. continue;
  24. }
  25. set.add(c[i]);
  26. swap(i,x);
  27. recur(x+1);
  28. swap(i,x);
  29. }
  30. }
  31. private void swap(int indexA,int indexB){
  32. char temp = c[indexA];
  33. c[indexA] = c[indexB];
  34. c[indexB] = temp;
  35. }
  36. }