天天看点

字符串的全排列字符串的全排列

字符串的全排列

简介

给定字符串S[0…N-1],设计算法,枚举S的全排列。

问题分析

递归算法

以字符串1234为例:

  • 1-234
  • 2-134
  • 3-124
  • 4-123

为了保证不遗漏,要保证递归前1234的顺序不变

代码实现

public void print(char[] str, int left, int right) {
        if (left == right) {
            for (int i = 0; i <= right; i++) {
                System.out.print(str[i]);
            }
            System.out.println();
        }
        for (int i =left; i <= right; i++) {
            str = swap(str, i, left);
            print(str, left+1, right);
            //复原数组
            str = swap(str, i, left);
        }
    }

    char[] swap(char[] str, int i, int j) {
        char t = str[i];
        str[i] = str[j];
        str[j] = t;
        return str;
    }
           

继续阅读