字串排列

2021-07-31 13:56:27 字數 1137 閱讀 4444

在網上看到了乙個操作字串的題目,該題為:字串排列。大概意思是列出字串中所有字元的所有組合並且輸出無重複。自己做了一下,這裡分享該題的思路,和做法。(自我覺得實現的有些麻煩)。歡迎指點。

問題

輸入乙個字串,列印出該字串中字元的所有排列。
輸入:

字串abc。
輸出:

列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。
思路

字串abc的所有排列存在三種情況:

1、以a開始,再連線bc的所有排列;

2、以b開始,再連線ac的所有排列;

3、以c開始,在連線ab的所有情況。

然後在計算長度為2的字串的所有排列,方法如上。所以採用遞迴的方式,遞迴直至字串長度為2時。當長度為2時,字串的排列一種為字串正序,另一種為字串的反序。長度為4或以上的也是如此。

// 如果引數長度為1 那麼所有的排列就是自身

if (str.length() == 1)

// 如果引數長度為2就呼叫基準情況(遞迴終止條件)

if (str.length() == 2)

for (int i = 0; i < str.length(); i++)

} }// 去除重複的排列

arraylistaa = new arraylist<>();

for (int i = 0; i < result.size(); i++)

} return aa;

}/**

* 遞迴的基準情況。

* * @param str

* 引數長度為2

* @return 長度為2的字串的所有可能排列,即自身和反序

*/public static arraylistpermutation2(string str) else

return result;

}

字串排列

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。第一種方法 字串拼接 function permutate str else return result console.log pe...

字串全排列

依次選出每乙個字元元素,作為排列的第乙個元素,然後對剩餘的元素進行全排列,如此遞迴處理,從而得到所有元素的全排列。以對字串abc進行全排列為例,我們可以這麼做 固定a,求後面bc的排列 abc,acb,求好後,a和b交換,得到bac 固定b,求後面ac的排列 bac,bca,求好後,c放到第一位置,...

字串全排列

如果沒有重複字元 include using namespace std void swap char char void permutation char char int main void swap char a,char b str 整個串 pbegin 後面的字串拉到前面的起始位置 voi...