思路:n!的时间复杂度也算是一种提示,要去使用递归。每次确定String字符串中一个字符,去循环改变下一个字符便可

工具:Set类型,加入时候自动排除重复,String.valueOf(char ch):char转换成String

import java.util.Set;
import java.util.HashSet;

public class Solution {
    char[] s;
    Set<String> set;
    
    public ArrayList<String> Permutation(String str) {
       if(str.isEmpty()){
           return null;
       }
        s = str.toCharArray();
        set = new HashSet<>();
        prem(0);
        return new ArrayList<>(set);
    }
    
    public void prem(int index){
        if(index+1 == s.length){
            set.add(String.valueOf(s));
            return;
        }
        
        for(int i=index; i<s.length; ++i){
            swap(index,i);
            prem(index+1);
            swap(index,i);
        }
    }
    
    public void swap(int a, int b){
        char temp = s[a];
        s[a] = s[b];
        s[b] = temp;
    }
}