面試題 劍指offer 字串的排列

2021-08-25 14:47:13 字數 643 閱讀 7809

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

輸入乙個字串,長度不超過9(可能有字元重複),字元只包括大小寫字母。

a:把字串分為兩部分:第一部分是第乙個字元,第二部分是第乙個字元以後的部分,然後拿第二個字元和第乙個字元分別進行交換;

b:求出所有可能出現在第一部分的字元,然後進行a的操作。

下面的**是我在牛客網的oj環境下編譯通過的

class solution 

void permutation(vector&array, string str, int begin)//遍歷第begin位的所有可能性

for(int i=begin;iswap(str[i],str[begin]);

//當i==begin時,也要遍歷其後面的所有字元

//當i!=begin時,先交換,使第begin位取到不同的可能字元,再遍歷後面的字元

permutation(array,str,begin+1);

swap(str[i],str[begin]);//為了防止重複的情況,還需要將begin處的元素重新換回來}}

};

劍指Offer 面試題 字串

思路 js function replacespace str c include include length 為字元陣列str的總容量,大於或等於字串str的實際長度 void replaceblank char str,int length newlength 為把空格替換成 20 之後的長度...

劍指offer 面試題58 翻轉字串

牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,student.a am i 後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是 i am a student....

字串的排列(劍指offer 面試題38)

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。輸入乙個字串,長度不超過9 可能有字元重複 字元只包括大小寫字母。該題利用遞迴的思想解決 首先將字串str分為兩部分 第乙個字元和剩下...