在阅读了许多关于“生成字符串排列”的帖子后,我尝试用Java编写它。
1)从第一个字符开始,与组合中的其他字符交换。
但是当我尝试使用递归实现时,对于长度为3的字符串,它只给出了两个字符串 :(。
public static void main(String[] args) {
char a[]= "123".toCharArray();
printPermutation(a,0);
}
private static void printPermutation(char[] a, int i) {
if(i==a.length-1)
System.out.println(new String(a));
else{
for(int x=i+1;x<a.length;x++)
{
swap(a,i,x);
printPermutation(a,x );
swap(a,i,x);
}
}
}
private static void swap(char[] a, int i, int x) {
char t=a[i];
a[i]=a[x];
a[x]=t;
}
我希望打印出6个字符串。
期望输出: 123, 132, 213, 231, 312, 321