- 固定首位字符,然后对字符串进行交换、排序
- 时间:2021年8月10号
import java.util.ArrayList;
public class Solution {
public ArrayList<String> Permutation(String str) {
//固定首位字符,然后对字符串进行交换、排序
ArrayList<String> res = new ArrayList<>();
if (str.length() > 0) {
permutationHelper(str.toCharArray(), 0, res);
}
return res;
}
public void permutationHelper (char[] arr, int i, ArrayList<String> res) {
if (i == arr.length - 1) {
String str = String.valueOf(arr);
if (!res.contains(str)) {
res.add(str);
}
} else {
for (int j = i; j < arr.length; j++) {
swap(arr, i, j);
permutationHelper(arr, i+1, res);
swap(arr, i, j); //为什么还要有一行
}
}
}
public void swap(char[] arr, int i, int j) {
char tem = arr[i];
arr[i] = arr[j];
arr[j] = tem;
}
}