前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >字符串排列_27

字符串排列_27

作者头像
名字是乱打的
发布2021-12-23 18:19:37
1850
发布2021-12-23 18:19:37
举报
文章被收录于专栏:软件工程

思路: 利用回溯法:

回朔法其实是在构造一棵生成树。对于"abc",第一个位置有三种取值,第二个位置有两种取值,第三个位置有一种取值。

代码语言:javascript
复制
public ArrayList<String> Permutation(String str) {
        List<String> res = new ArrayList<>();

        if (str == null || str.length() <= 1) {
            res.add(str);
            return (ArrayList<String>) res;
        }

        permutationHelper(str.toCharArray(), 0, res);
        Collections.sort(res);
        return (ArrayList<String>) res ;
    }


    //回溯法其实是在构造一棵生成树。对于"abc",第一个位置有三种取值,第二个位置有两种取值,第三个位置有一种取值。
    private void permutationHelper(char[] arr, int index, List<String> res) {
        if (index == arr.length - 1 && !res.contains(String.valueOf(arr))) {
            res.add(String.valueOf(arr));
        }

        for (int i = index; i < arr.length; i++) {
            swap(arr,i,index);
            permutationHelper(arr,index+1,res);
            swap(arr,i,index);
        }
    }

    private void swap(char[] arr, int a, int b) {
        char temp = arr[a];
        arr[a] = arr[b];
        arr[b] = temp;
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/4/19 下,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档