美文网首页
牛客网-递归的使用:输入一个字符串,按字典序打印出该字符串中字符

牛客网-递归的使用:输入一个字符串,按字典序打印出该字符串中字符

作者: 雨夜微凉886 | 来源:发表于2020-03-06 11:33 被阅读0次

public class Main {
    public ArrayList<String> permutation(String str) {
        ArrayList<String> list = new ArrayList<>();
        if (str == null || str.length() == 0) {
            return list;
        }
        collect(str.toCharArray(), 0, list);
        Collections.sort(list);
        return list;
    }

    public static void collect(char[] chars, int begin, ArrayList<String> list) {
        if (begin == chars.length - 1) {
            // 不能存入相同的排列
            String s = String.valueOf(chars);
            if (!list.contains(s)) {
                list.add(s);
                return;
            }
        }

        for (int i = begin; i < chars.length; i++) {//大的循环,需要控制第一个逐个和后面的交换
            swap(chars, i, begin);
            collect(chars, begin + 1, list);
            swap(chars, i, begin);
        }

    }

    public static void swap(char[] chars, int i, int j) {
        char temp = chars[j];
        chars[j] = chars[i];
        chars[i] = temp;
    }

    public static void main(String[] args) {
        Main a = new Main();
        System.out.println(a.permutation("abc"));
    }
}

相关文章

  • JZ-027-字符串的排列

    字符串的排列 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打...

  • 字符串的全排列

    题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打印出由字符a,...

  • 字符串的排列

    输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打印出由字符a,b,c所能...

  • 《剑指offer》(二十七)--字符串的排序(java)

    考点:字符串、动态规划、递归、(分解让复杂问题简单) 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有...

  • 全排列算法

    问题: 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,...

  • 【面试题28】字符串的全排列

    【题目】 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所...

  • 面试题38:字符串的全排列和组合

    题型1:排列/** 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a...

  • 《剑指offer》— JavaScript(27)字符串的排列

    字符串的排列 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字...

  • 全排列

    题目 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排...

  • 字符串的排列(java)

    题目描述: 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c...

网友评论

      本文标题:牛客网-递归的使用:输入一个字符串,按字典序打印出该字符串中字符

      本文链接:https://www.haomeiwen.com/subject/kczvrhtx.html