题目:输入一个字符串,打印出该字符串的全排列。
思路:将整个字符串分成两部分,第一部分为一个字符,将该字符和该字符后面的字符(直到最后一个字符)依次交换,确定第一个字符;然后固定第一个字符,将后面的字符也按照这种思维递归,即可完成整个字符串的排列。
如图所示:
Java代码:
public class StringPermutation {
public void permutation(char[] s){
if(s==null)
return;
permutation(s,0);
} public void permutation(char[] s, int begin) {
if(begin==s.length)
System.out.println(s);
else{
for(int i=begin;i<s.length;i++){
swrap(s,begin,i);
permutation(s,begin+1);
swrap(s,begin,i);
} }
}
public void swrap(char[] s,int m,int n){
char temp=s[m];
s[m]=s[n];
s[n]=temp;
}
public static void main(String[] args){
char[] s={'a','b','c'};
StringPermutation sp=new StringPermutation();
sp.permutation(s);
}
}