大厂面试:获取字符串的可重复使用其中所有字符的全排列

程序员小迷 2024-04-15 09:43:25

一、概念

现有一个字符串,要打印出该字符串中可重复使用该字符串中的所有字符的全排列。例如输入字符串ab,则打印出由字符a、b所能排列出来的可重复使用所有字符的所有字符串aa、ab、ba、bb。

相当于每个位置都可以选择字符数组中的任何一个字符。

可以基于递归算法来解决这个问题。

二、代码

public Permutation {

public static void main(String[] args) {

char[] array = {'a', 'b'};

//调用全排列函数

permutation(new char[array.length], array, 0);

}

/**

* 调用全排列函数

* 第一个参数:临时存储字符数组,大小和入参array长度一致

* 第二个参数:入参数组

* 第三个参数:数组起始索引,从0开始

*/

public static void permutation(char[] buf, char[] array, int index) {

//处理到入参数组的最后一个位置后,进行输出打印并使递归返回

if (index == array.length) {

for (int i = 0; i < array.length; ++i) {

System.out.print(buf[i]);

}

System.out.println();

return;

}

for (int i = 0; i < array.length; i++) {

//从索引位置len开始赋值给临时字符数组

buf[index] = array[i];

//索引位置加1,继续递归

permutation(buf, array, index + 1);

}

}

}

致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享。

若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢。您的支持是我们为您提供帮助的最大动力。

0 阅读:4

程序员小迷

简介:致力于Android、iOS、C、Java等编程技术的技巧经验分享