每日一題 66 字串的排列

2021-06-17 20:27:34 字數 1183 閱讀 3459

題目來自劍指offer

題目(1):集合元素的全排列,只處理數字全不同的情況

思路:全排列

屬於線性遞迴,遞迴一次確定乙個位置的資料,直到所有位置全被處理為止。

注意:(1)在確定乙個位置時,由於該位置的資料有多種,因此需要使用for迴圈。

(2)程式裡面沒有使用臨時陣列,而是通過陣列元素交換的方式獲得該位置的資料的。

(3)在確定乙個位置時,待交換資料的起點是從該位置開始,一直到陣列結束。

**:

#include using namespace std;

void swap(int& a,int& b)

void perm(int narr,int nlen,int nstart)

void combine(int narr,int nlen,int nstart,int nnext,int ncount)

cout

if (ncount == nresult.size())

nresult.push_back(narr[nstart]);

combine(narr,nlen,nstart + 1,nresult,ncount);

nresult.pop_back();

combine(narr,nlen,nstart + 1,nresult,ncount);

}void combine(int narr,int nlen)

}int main()

; combine(narr,nlen);

system("pause");

return 1;

}

思路(3):

**:

#include using namespace std;

void swap(int& a,int& b)

void combine(int narr,int nlen,int nstart,int nnext)

{ if (nstart > 0)

{ for (int i = 0;i < nstart;i++)

{ cout<

每日一題 87 字串過濾

題目來自網上 題目描述 通過鍵盤輸入一串小寫字母 a z 組成的字串。請編寫乙個字串過濾程式,若字串中出現多個相同的字元,將非首次出現的字元過濾掉。要求實現函式 void stringfilter const char pinputstr,long linputlen,char poutputstr...

每日一題 12 字串壓縮

題目描述 對字串進行rle壓縮,將相鄰的相同字元,用計數值和字元值來代替。例如 aaabccccccddeee,則可用3a1b6c2d3e來代替。輸入描述 輸入為a z,a z的字串,且字串不為空,如aaabccccccddeee 輸出描述 壓縮後的字串,如3a1b6c2d3e 思路 建立乙個變數,...

每日一題 38字串相乘

給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 456 輸出 56088 說明 class solution string a...