**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的形式,比如...