Advertisement

剑指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)

还没有任何评论哟~