题解 | #字符串的排列#

字符串的排列

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;
    }
}

主要通过字符串转成数组,遍历减支处理

全部评论

相关推荐

11-23 15:14
中原工学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务