返回String []的String Permutation方法

时间:2016-04-29 00:48:49

标签: java

我之前已经问过这个问题并且对于一些人来说它重复了! 我发现的灵魂都是无效的 我希望这个方法是这样的:

public String[] permutations(String str){//code}

例如,如果我有一个字符串“abc”,则输出应为: a,b,c,ab,ac,ba,bc,ca,cb,abc,acb,bac,bca,cab,cba 我试图将我从void找到的方法转换为String [],但我无法做到。它总是有错误

1 个答案:

答案 0 :(得分:0)

尝试以下方法。我不知道你申请的是什么(如果有的话),所以我只是不做。

public String[] permutations(String str) {
    if (str.length() == 0) {
        return new String[0];
    } else if (str.length() == 1) {
        String[] s = new String[1];
        s[0] = str;
        return s;
    }
    Set<String> permutations = new HashSet<>();
    for (int i = 0; i < str.length(); i++) {
        char c = str.charAt(i);
        String part = str.substring(0, i) + str.substring(i + 1);
        String[] rem = permutations(part);
        for (String s : rem) {
            permutations.add(s);
            for (int j = 0; j <= s.length(); j++) {
                String t = s.substring(0, j) + c + s.substring(j);
                permutations.add(t);
            }
        }
    }
    return permutations.toArray(new String[permutations.size()]);
}