字符串的全排列
简介
给定字符串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;
}