题目要求:
输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba
解题思路:
我们求整个字符串的排列,可以看成两步,首先求可能出现在第一个位置上的字符,即把第一个字符和后面所有的字符交换。第二步固定一个字符,求后面所有字符的全排列。这是一个递归的思想。
程序代码(Java):
import java.util.*;
public class sort_Char
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
char ch[]=str.toCharArray();
sortChar(ch,0);
}
public static void sortChar(char[] ch,int index)
{
if (ch==null)
{
return ;
}
if (index==ch.length)
{
System.out.println(ch);
}
for (int i=index; i<ch.length; i++)
{
char temp=ch[index];
ch[index]=ch[i];
ch[i]=temp;
sortChar(ch,index+1);
temp=ch[index];
ch[index]=ch[i];
ch[i]=temp;
}
}
}