不考慮重複字元的字串組合

2021-07-28 03:41:59 字數 1155 閱讀 7066

**csdn使用者hackbuter1的專欄,

因為在學習何海濤的《劍指offer》期間,方法雖好理解,但是演算法的具體實現比較困難。因而,參考了網上的**。並且將苦澀難懂的**加注釋,以方便後來讀者使用。

輸入乙個字串,輸出該字串中字元的所有組合。舉個例子,如果輸入"

abc"

,它的組合有a、

b、c、

ab、ac、

bc、abc。

本題也可以用遞迴的思路來求字串的組合。

假設我們想在長度為

n的字串中求

m個字元的組合。我們先從頭掃瞄字串的第乙個字元。針對第乙個字元,我們有兩種選擇:一是把這個字元放到組合中去,接下來我們需要在剩下的

n-1個字元中選取

m-1個字元;而是不把這個字元放到組合中去,接下來我們需要在剩下的

n-1個字元中選擇

m個字元。這兩種選擇都很容易用遞迴實現。下面是這種思路的參考**:

#include#include#includeusing namespace std;

#includevoid combination(char *string ,int number,vector&result);//在字串string中,選擇number個字元進行組合,並將所有組合

結果放在vector上

void combination(char *string)

void combination(char *string ,int number , vector&result)

if(*string == '\0')

return ;

result.push_back(*string);

combination(string + 1 , number - 1 , result);//string+1是指記憶體加1,即需要在剩下的string[n-1

]個字元中選取

m-1個字元,

result.pop_back();

combination(string + 1 , number , result);//string+1是指記憶體加1,即

需要在剩下的string[n-1

]個字元中選取

m個字元,

}int main(void)

mysql比較字串相等,不考慮字元出現的位置。

同事的考試系統庫最近查東西遇到個問題,答題選項如何判斷abcd等於dbca,最初想通過查詢條件like實現,實測出現諸多問題。查閱資料寫了個函式比較字串相等,不考慮字串出現的位置。create function bjstr str varchar 255 str1 varchar 255 retur...

字串組合

題目 輸入乙個字串,輸出該字串中字元的所有組合。舉個例子,如果輸入 abc,它的組合有a b c ab ac bc abc。假設我們想在長度為 n的字串中求 m個字元的組合。我們先從頭掃瞄字串的第乙個字元。針對第乙個字元,我們有兩種選擇 一是把這個字元放到組合中去,接下來我們需要在剩下的 n 1個字...

重複字串

題目描述 給定兩個字串a和b,我們可以定義一些操作 a b為將字串a和字串b連線起來,比如a aoe b jkw 那麼a b aoejkw 進一步,我們可以有指數操作,a 0 a 1 a,a 2 a a,a n a a n 1 a a a n個a 現在給你乙個字串,你可以將它看成是a n的形式,比如...