Java 返回字符串[]的字符串置换方法

Java 返回字符串[]的字符串置换方法,java,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[],但我做不到。它总是有错误请尝试以下操作。我不知道你申请的是哪一类(如果有的话),所以我不打算申请 publi

我以前问过这个问题,有些人说这是重复的! 我找到的灵魂都是空的 我希望方法是这样的:

public String[] permutations(String str){//code}
例如,如果我有一个字符串“abc”,那么输出应该是: a、 b、c、ab、ac、ba、bc、ca、cb、abc、acb、bac、bca、cab、cba
我试图将我找到的方法从void转换为String[],但我做不到。它总是有错误

请尝试以下操作。我不知道你申请的是哪一类(如果有的话),所以我不打算申请

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()]);
}
public String[]排列(String str){
如果(str.length()==0){
返回新字符串[0];
}else if(str.length()==1){
字符串[]s=新字符串[1];
s[0]=str;
返回s;
}
Set permutations=new HashSet();
对于(int i=0;i对于(int j=0;j请发布a。欢迎使用SO。显示您的代码并发布您收到的错误。到目前为止您得到了什么?您好,感谢您发布的解决方案比我的好,但它跳过了一些排列。对于“abc”输入,它跳过了“bca”和“cba”编辑。很抱歉,现在应该是准确的。我刚刚更改了