题目:输入一个字符串,打印出该字符串的全排列。
思路:将整个字符串分成两部分,第一部分为一个字符,将该字符和该字符后面的字符(直到最后一个字符)依次交换,确定第一个字符;然后固定第一个字符,将后面的字符也按照这种思维递归,即可完成整个字符串的排列。
如图所示:
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); } }