不含 AAA 或 BBB 的字串 先奏後斬思想

2021-10-04 04:12:07 字數 1167 閱讀 8511

0 <= b <= 100

對於給定的ab,保證存在滿足要求的s

c++函式形式為:string strwithout3a3b

(int a,

int b)

題目保證一定存在這樣的s,我們可以逆向的分析一下,當兩個整數需要滿足什麼樣的情況時,才一定能保證存在這樣的s呢?

來乙個極端的思想,如果a非常多,b非常少,ab之間存不存在制約呢?

我們很容易得出這樣的極端情況就是a=2b+2,也就是每兩個a後都跟著乙個b,最後還有兩個a的情況。如果a再多乙個,就找不到合適的位置了。相反,如果ba少,也是一樣的情況。

於是我們就有思路了,假如ab少,我們可以先按照b的數量構造出乙個極端情況的字串,然後,再根據a的數量從兩個相鄰的裡面刪去乙個。反過來也是一樣的做法。

還有就是a==b的情況,這時候,只要乙個接乙個的加上去就行了。

整個題的思路:

class

solution

return s;}if

(a>b)

else}}

int num=

2*b+

2-a;

for(

int i=

0;i)return s;

}else

else}}

int num=

2*a+

2-b;

for(

int i=

0;i)return s;

}return s;}}

;

atfwus  --writing  by 2020–03–20

每日刷題 不含 AAA 或 BBB 的字串

示例 1 輸入 a 1,b 2 輸出 abb 解釋 abb bab 和 bba 都是正確答案。示例 2 輸入 a 4,b 1 輸出 aabaa 解答 這道題可以用貪心演算法來解決。但是注意需要設定乙個flag標誌。我們定義 a,b 待寫的 a 與 b 的數量。設當前還需要寫入字串的 a 與 b 中較...

最長不含重複字串的子字串

一 題目描述 請從字串中找出乙個最長的不包含重複字元的子字串,計算該最長子字串的長度。假設字串中只包含 a a z z 的字元。例如,在字串 arabcacfr arabcacfr 中,最長的不含重複字元的子字串是 rabc rabc 或者 acfr acfr 長度為4.二 解題思路 1.採用動態規...

最長不含重複字元的子字串

題目 輸入乙個字串,找出字串中最長的不含重複字元的子字串,計算該子字串的長度。假設字串中的字元為 a z 例如 arabcacfr 最長的字串為 rabc 和 acfr 長度為 4 int find max len string str else dp str i a i return max le...