题解 | #字符串的排列#
字符串的排列
https://www.nowcoder.com/practice/fe6b651b66ae47d7acce78ffdd9a96c7
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @return string字符串ArrayList
*/
public ArrayList<String> Permutation (String str) {
ArrayList<String> res = new ArrayList<>();
// write code here
if ("".equals(str)) {
return res;
}
char[] chs = str.toCharArray();
List<ArrayList<String>> listOfLists = permu(chs);
System.out.println(listOfLists);
Set<String> re2s = new HashSet<>();
// 遍历二维数组
for (List<String> list : listOfLists) {
// 创建一个StringBuilder来拼接字符
StringBuilder sb = new StringBuilder();
// 遍历每个字符并添加到StringBuilder中
for (String c : list) {
sb.append(c);
}
// 将拼接好的字符串添加到结果列表中
re2s.add(sb.toString());
}
System.out.println(res);
res = new ArrayList<>(re2s);
return res;
}
public static List<ArrayList<String>> permu(char[] chs) {
List<ArrayList<String>> res = new ArrayList<>();
res.add(new ArrayList<>());
for (int i = 0; i < chs.length; i++) {
List<ArrayList<String>> tmp = new ArrayList<>();
for (ArrayList<String> r : res) {
for (int j = 0; j < r.size() + 1; j++) {
r.add(j, String.valueOf(chs[i]));
ArrayList<String> temp = new ArrayList<>(r);
tmp.add(temp);
r.remove(j);
}
}
res = new ArrayList<>(tmp);
}
return res;
}
}
主要通过字符串转成数组,遍历减支处理
