剑指offer第二版面试题38:字符串排列问题(Java)
发布时间
阅读量:
阅读量
【题目描述:
给定一个字符串,输出该字符串中字符的所有可能排列形式。
例如,当输入字符串为abc时,应输出由字符a、b、c组成的所有排列结果:abc, acb, bac, bca, cab, cba
分析:
若要计算整个字符串的排列组合,可以将其分解为两个步骤:首先确定所有可能出现在首位的字符,即依次将第一个字符与后续每个字符进行交换。其次,在固定首位字符的前提下,继续求解剩余字符的排列组合。此时,依然将剩余部分划分为两个部分:第一个字符以及其后所有字符。接着,将该第一个字符与后续各个字符依次交换位置。
代码如下:
/** * 字符串的排列 前提:字符串中的每个字符都是不相同的
*/
public class StringPermutation {
public static void main(String[] args) {
String str = "abcd";
char[] arr = str.toCharArray();
permutation(arr, 0);
}
public static void permutation(char[] arr, int begin) {
全部评论 (0)
还没有任何评论哟~
