【算法】字符串的排列(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;
}
}
}
...