題目:
輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。
輸入乙個字串,長度不超過9(可能有字元重複),字元只包括大小寫字母。分析:
遞迴的思想類似歸納思想,首先考慮遞迴一定要學會簡化思維,不能想的太深,而是只考慮乙個層次的變化;否則就會陷入思維的誤區;
以這道題為例,假設是乙個長度為4的陣列,a、b、c、d
首先應該先明白什麼是乙個長度為n的陣列的全排列:第乙個位置有n種可能,第二個位置有n-1中可能.....所以總共有n!個全排列;
遞迴思想:首先乙個迴圈讓a、b、c、d分別作陣列首字母,也就是第乙個位置的n種可能;然後不要再考慮第二個位置、第三個位置....這樣就相當於把遞迴展開考慮,不可能想完;而是預設我們的演算法可以得到剩下n-1個位置的全排列,進行遞迴[perm(list,k+1,m)];
接下來再考慮出口就行了,也就是當最後只剩下乙個位置沒有確定時,k==m時,把陣列列印出來即可;
總的來說,考慮遞迴就要先預設函式正確,然後在函式的基礎上設計這個函式;
class solution
}else
};
字串排列
在網上看到了乙個操作字串的題目,該題為 字串排列。大概意思是列出字串中所有字元的所有組合並且輸出無重複。自己做了一下,這裡分享該題的思路,和做法。自我覺得實現的有些麻煩 歡迎指點。問題輸入乙個字串,列印出該字串中字元的所有排列。輸入 字串abc。輸出 列印出由字元a,b,c所能排列出來的所有字串ab...
字串排列
輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。第一種方法 字串拼接 function permutate str else return result console.log pe...
字串的排列
題目 輸入乙個字串,列印出該字串中字元的所有排列。例如輸入字串 abc,則輸出由字元a b c所能排列出來的所有字串 abc acb bac bca cab和 cba。分析 這是一道很好的考查對遞迴理解的程式設計題,因此在過去一年中頻繁出現在各大公司的面試 筆試題中。我們以三個字元 abc為例來分析...