【算法】字符串的排列(Java)

2021-08-18  本文已影响0人  尼古拉斯小韭菜

题目

输入一个字符串,打印出该字符串中的字符的所有排列,例如输入字符串abc;则打印出由字符a,b,c排列出来的所有字符串abc,acb,bac,bca,cab,cba.

步骤

利用递归思想,把一个字符看成由两部分组成,第一部分未他的第一个字符,第二部分是后边的所有字符。
(1)把字符串分为两部分,一部分是字符串的第一个字符,另一部分是第一个字符以后的所有字符
(2)拿第一个字符和他后边的所有字符逐个交换

代码

...

public static void main(String[] args) {
    char[] str = "abc".toCharArray();
    permutation(str, 0);
}

public static void permutation(char[] array, int index) {
    if(index == array.length -1){
        System.out.println(array);
    } else {
        for (int i = index; i < array.length; i++) {
            char temp = array[i];
            array[i] = array[index];
            array[index] = temp;
            
            permutation(array, index + 1);
            
            temp = array[i];
            array[i] = array[index];
            array[index] = temp;
            
        }
    }
}

...

上一篇 下一篇

猜你喜欢

热点阅读