思路: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;
}
}