代码如下:
import java.util.*;
public class Solution {
public ArrayList<String> Permutation(String str) {
ArrayList<String> res = new ArrayList<>();
if(str != null && str.length() > 0){
char[] arr = str.toCharArray();
helper(0, arr, res);
//字典序
Collections.sort(res);
}
return res;
}
private void helper(int level, char[] arr, ArrayList<String> res){
if(level == arr.length - 1){
res.add(String.valueOf(arr));
}
//为了防止同一层递归出现重复元素
Set<Character> set = new HashSet<>();
for(int i = level; i < arr.length; i++){
if(set.contains(arr[i])){
continue;
}
set.add(arr[i]);
swap(arr, level, i);
helper(level + 1, arr, res);
swap(arr, level, i);
}
}
private void swap(char[] arr, int left, int right){
char temp = arr[right];
arr[right] = arr[left];
arr[left] = temp;
}
}