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

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

一、概念

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

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

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

二、代码

public class 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等编程技术的技巧经验分享。

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

转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/223626.html
0
最新回复(0)