如果字串中不含有任何 'aaa','bbb' 或 'ccc' 這樣的字串作為子串,那麼該字串就是乙個「快樂字串」。給你三個整數 a,b ,c,請你返回 任意乙個 滿足下列全部條件的字串 s:s 是乙個盡可能長的快樂字串。s 中 最多 有a 個字母 'a'、b 個字母 'b'、c 個字母 'c' 。s 中只含有 'a'、'b' 、'c' 三種字母。如果不存在這樣的字串 s ,請返回乙個空字串 ""。
示例 1:
輸入:a = 1, b = 1, c = 7
輸出:"ccaccbcc"
解釋:"ccbccacc" 也是一種正確答案。
示例 2:
輸入:a = 2, b = 2, c = 1
輸出:"aabbc"
示例 3:
輸入:a = 7, b = 1, c = 0
輸出:"aabaa"
解釋:這是該測試用例的唯一正確答案。
思路:每次從a,b,c中個數最多的字母tmp,該tmp(比如a)能否放入結果res,分三種情況:
1、tmp能放入res,則放入(res倒數第1、第2個字母不同時為tmp)
2、tmp不能放入res,並且沒有其他字元可選(比如b、c個數為0),則結束
3、tmp不能放入res,選擇個數次多的元素放入(比如b,一定能放入)
class solution:def longestdiversestring(self, a: int, b: int, c: int) -> str:
m =
re = ''
while true:
#re中每增加乙個元素,都要對剩下的a,b,c個數進行排序!!!
tmp = sorted([(k, v) for k, v in m.items()], key = lambda x:x[1], reverse = true)
print(re)
if len(re)>=2 and re[-1] == re[-2] and re[-1] == tmp[0][0]:
if m[tmp[1][0]] <=0:
break
re += tmp[1][0]
m[tmp[1][0]] -= 1
else:
if m[tmp[0][0]] <= 0:
break
re += tmp[0][0]
m[tmp[0][0]] -= 1
return re
1405 最長快樂字串
如果字串中不含有任何 aaa bbb 或 ccc 這樣的字串作為子串,那麼該字串就是乙個 快樂字串 給你三個整數 a,b c,請你返回 任意乙個 滿足下列全部條件的字串 s s 是乙個盡可能長的快樂字串。s 中 最多 有a 個字母 a b 個字母 b c 個字母 c s 中只含有 a b c 三種字...
LeetCode 1405 最長快樂字串
如果字串中不含有任何 aaa bbb 或 ccc 這樣的字串作為子串,那麼該字串就是乙個 快樂字串 給你三個整數 a,b c,請你返回 任意乙個 滿足下列全部條件的字串 s 輸入 a 1,b 1,c 7 輸出 ccaccbcc 解釋 ccbccacc 也是一種正確答案。輸入 a 2,b 2,c 1 ...
5195 最長快樂字串
如果字串中不含有任何 aaa bbb 或 ccc 這樣的字串作為子串,那麼該字串就是乙個 快樂字串 給你三個整數 a,b c,請你返回 任意乙個 滿足下列全部條件的字串 s s 是乙個盡可能長的快樂字串。s 中 最多 有a 個字母 a b 個字母 b c 個字母 c s 中只含有 a b c 三種字...