java - 置换一个字符串

标签 java string algorithm permutation

给定字符串,打印它的所有排列。为此,我想出了以下程序。

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

        return input;

    }

    /**
     * 
     * @param args
     */

    public static void permuteStrings(char[] inputString, int start, int finish ) {
        //Base case: When there is only single element, print the string
        if(start == finish) 
            System.out.println(inputString);
        else {
            //Recursive case: Swap first element with all the elements and permute on the 
                           // rest of string.
            for(int i = start; i <= finish; i++) {
                inputString = swap(inputString, start, i);
                permuteStrings(inputString, i + 1, finish);
                inputString = swap(inputString,start, i); //restoring the original string
            }
        }
    }

但是,对于给定的输入 ABC,它打印的都是

ABC
BAC

我似乎无法弄清楚问题是什么

最佳答案

解决了问题。问题出在函数调用中:

permuteStrings(inputString, i + 1, finish);

正确的方法是:

permuteStrings(inputString, start + 1, finish);

关于java - 置换一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12252704/

相关文章:

java - 在生产环境中使用 HSQLDB

java - 如何在 Spring 应用程序中处理生产数据库的架构升级

java - 使 Label Wicket 不可见

java - 正则表达式在空格和其他字符上分割字符串

java - 为什么当我在另一台计算机上加载我的工作区时 Eclipse 显示错误?

python - 如何在python中检查字符串是否为空

java - 如何用一个空行替换多个空格和换行符

算法 :XOR operation

algorithm - 4 求和时间复杂度

Java 用递归解决迷宫问题