问题:给出形如“abc”的字符串,要全输出该字符串等长度的全排列结果。
标准输出为:abc
acb
bac
bca
cab
cba
思路:利用递归算法,类似二叉树的先序遍历,最重要的不同是要解决回朔问题,按照常规的递归算法a->b->c,输出abc后,回朔到b此时的缓存字符串应当做删除操作,将c删掉,否则继续append的话会有形如abccb的错误。
public class FullPermutation {
//static StringBuilder fullString=new StringBuilder();
static void fullPermutation(String s,StringBuilder currentString){
if(s.isEmpty()){
System.out.println(currentString);
}
for(int i=0;i<s.length();i++){
char ch=s.charAt(i);
currentString.append(ch);
String newString=s.replaceAll(String.valueOf(ch),""); //剔除字母
fullPermutation(newString,currentString);