美文网首页程序员
面试题 08.08. 有重复字符串的排列组合

面试题 08.08. 有重复字符串的排列组合

作者: xy啊_46b8 | 来源:发表于2020-04-28 23:21 被阅读0次

题目描述:

有重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合。

示例1:

输入:S = "qqe"

输出:["eqq","qeq","qqe"]

示例2:

输入:S = "ab"

输出:["ab","ba"]


这道题使用了回溯法,真是令人头大啊!废话不多说,上代码~


import java.util.Arrays;

import java.util.HashSet;

import java.util.Set;

public class oeoe {

    static String[]finalt;

    private Setset=new HashSet<>();

    public String[]permutation(String S) {

        if (S.length() ==0)    return new String[0];

        char[] s = S.toCharArray();

        boolean[] used =new boolean[s.length];

        helper(s, used, "");

        String[] ret=new String[set.size()];

        finalt =set.toArray(ret);

        return finalt;

    }

    private void helper(char[] s, boolean[] used, String cur) {

        if (cur.length() == s.length) {

            set.add(cur);

            return;

        }

    for (int i=0;i<s.length;i++){

            if (!used[i]){

                used[i]=true;

                helper(s,used,cur+s[i]);

                used[i]=false;

            }

        }

    }

public static void main(String[] args){

        String S ="qqe";

        oeoe oep =new oeoe();

        oep.permutation(S);

        System.out.println(Arrays.toString(finalt));

    }

}

相关文章

网友评论

    本文标题:面试题 08.08. 有重复字符串的排列组合

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