面試題38 字串的排列

2022-03-03 20:05:15 字數 1156 閱讀 2785

1 題目描述

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則按字典序列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。

2 輸入

str3 輸出

str的全排列(可能有字元重複)。字元只包括大小寫字母。

4 樣例輸入

"abc"
5 樣例輸出
"abc", "acb", "bac", "bca", "cab", "cba"
6 求解思路

牛客題解說到了可以用set集合來儲存全排列,不僅幫我解決了重複的排列,而且還幫我拍了個序,秒啊!剩下的就剩下全排列的簡單問題了。

7 c++版本**如下

class solution 

void dfs(string str, int pos, set&ret)

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

}vectorpermutation(string str) ;

setret;

dfs(str, 0, ret);

vectorans(ret.begin(), ret.end());

return ans;}};

今天補一下另乙個版本的求全排列方法。這個方法不會用到交換數字的操作,而且求出的全排列是也是按照字典序排序的。可以說是回溯法的最佳體驗了。直接上**!

面試題38 字串的排列

問題1 輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。思路 abcde 第一輪,a與b交換,a與c交換,a與d交換,a與e交換,其中a每次都要回到原來的位置 第二輪,a固定,bcd...

面試題38 字串的排列

題目 輸入乙個字串,列印出該字串中字元的所有排列。你可以以任意順序返回這個字串陣列,但裡面不能有重複元素。示例 輸入 s abc 輸出 abc acb bac bca cab cba 參考思路 外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img mbntu64f 1607042717...

回溯 面試題38 字串的排列(medium)

題目 題解 如下 class solution set res visit.resize s.size false string str backtrack s,res,str,0,int s.size return vector res.begin res.end 回溯法基本框架 index用來表...