要用迭代,最后将结果保存时一定要用指针
关键:
string(str)
s[i]>s[j]
/*1、把字符串看成俩部分,第一个字符和后面的整个快; 2.、每次把第一个字符和后面的一个交换, 3,固定第一个字符然后对后面的字符块进行全排列 4、对后面字符串的全排列可以依旧这样递归 */
func permu(list *[]string,str []byte, i int ) {
if str ==nil {
return
}
if i ==len(str)-1 {
*list = append(*list,string(str))
}else {
for j := i ; j < len(str) ; j++ {
temp := str[j];
str[j] = str[i];
str[i] = temp;
permu(list,str, i + 1 );
temp = str[j];
str[j] = str[i];
str[i] = temp;
}
}
return
}
func GetCombo(arr string) []string {
//l := len(arr)
//idlist := []int{}
chAry := []byte(arr)
ret:=make([]string,0,6)
permu(&ret,chAry, 0)
stringSort(ret);
return ret
}
func stringSort(s []string){
for i:=0; i< len(s)-1; i++ {
for j:=i+1;j < len(s) ;j++{
if s[i]>s[j] {
temp1 := s[j];
s[j] = s[i];
s[i] = temp1;
}
}
}
}