package simple;
public class RecursionQuestion {
public static void main(String[] args) {
paiLie("", "1223");
}
/**
* 功能:1,2,2,3 -->所有排列组合 1223,1322... (循环递归)
*/
static void paiLie(String root, String s){
if(s.length()<1){
System.out.println(root); //打印出来
}else{
int[] index = new int[s.length()];
for(int i=0;i<s.length();i++){ //循环所有的字符第一次出现的位置记录在index中(第二次出现的位置不记录)
index[i] = s.indexOf(s.charAt(i));
}
for(int i=0;i<s.length();i++){
if(index[i] == i){ //出现相同的字符过滤掉-不进行递归,不相同的字符进行递归
paiLie(root+s.substring(0, 1), s.substring(1));
}
s = s.substring(0, 1) + s.substring(1); //循环左移一位
}
}
}
输出:
1223
1223
1223
1223
1223
1223
1223
1223
1223
1223
1223
1223