字串的排列 翻轉單詞順序列

2021-08-25 17:01:06 字數 1104 閱讀 3548

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

輸入乙個字串,長度不超過9(可能有字元重複),字元只包括大小寫字母。
這是個遞迴求解的問題。對於字串的排列問題。如果能生成n-1個元素的全排列,就能生成n個元素的全排列。對於只有1個元素的集合,可以直接生成全排列。全排列的遞迴終止條件很明確,只有1個元素時,迴圈終止。

思路:

把乙個字串看成兩部分組成:第一部分為第乙個字元,第二部分為後面的所有字元。

首先求出所有可能出現在第一位置的字母,即begin與後面所有與它不同的字母進行交換

固定第乙個字母,求後面字母的全排序,此時仍把後面的字元看成兩部分,第乙個字元和後面的字元,然後重複上述步驟。(遞迴)

//字串的排列

void permutationcore(string str,int pos,vector& ret)

for(int i=pos; ipermutation(string str)

return ret;

}

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

翻轉單詞順序,首先找到每個單詞,然後進行翻轉。  

這裡利用str的基本操作,乙個字母乙個字母進行處理

//翻轉單詞順序列

//乙個乙個字母進行處理

string reversesentence(string str)

else

}ret = tmp +ret;

return ret;

}

翻轉單詞順序列

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

翻轉單詞順序列

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

翻轉單詞順序列

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