当前位置:网站首页>Simulation volume leetcode [general] 1405 Longest happy string

Simulation volume leetcode [general] 1405 Longest happy string

2022-07-06 06:18:00 Encounter simulation volume

Summary : Simulation volume Leetcode Summary of questions

1405. The longest happy string

If the string does not contain any ‘aaa’,‘bbb’ or ‘ccc’ Such a string is used as a substring , Then the string is a 「 Happy string 」.

Here are three integers a,b ,c, Please return Any one A string that satisfies all of the following conditions s:

s Is a happy string as long as possible .
s in most Yes a Letters ‘a’、b  Letters ‘b’、c Letters ‘c’ .
s It only contains ‘a’、‘b’ 、‘c’ Three letters .
If such a string does not exist s , Please return an empty string “”.

Example 1:

Input :a = 1, b = 1, c = 7
Output :“ccaccbcc”
explain :“ccbccacc” It is also a correct answer .
Example 2:

Input :a = 2, b = 2, c = 1
Output :“aabbc”
Example 3:

Input :a = 7, b = 1, c = 0
Output :“aabaa”
explain : This is the only correct answer to the test case .

Tips :

0 <= a, b, c <= 100
a + b + c > 0

source : Power button (LeetCode)
link :https://leetcode-cn.com/problems/longest-happy-string
Copyright belongs to the network . For commercial reprint, please contact the official authority , Non-commercial reprint please indicate the source .

Code :

from leetcode_python.utils import *


class Solution:
    def longestDiverseString(self, a: int, b: int, c: int) -> str:
        cnt = {
    'a':a,'b':b,'c':c}
        res = ''
        while True:
            _,mid,most = sorted(cnt.keys(),key=lambda x:cnt[x])
            if (len(res)<2 or not res[-2]==res[-1]==most) and cnt[most]:
                res+=most
                cnt[most]-=1
            elif cnt[mid]:
                res+=mid
                cnt[mid]-=1
            else:
                break
        return res

def test(data_test):
    s = Solution()
    data = data_test  # normal
    # data = [list2node(data_test[0])] # list turn node
    return s.longestDiverseString(*data)


def test_obj(data_test):
    result = [None]
    obj = Solution(*data_test[1][0])
    for fun, data in zip(data_test[0][1::], data_test[1][1::]):
        if data:
            res = obj.__getattribute__(fun)(*data)
        else:
            res = obj.__getattribute__(fun)()
        result.append(res)
    return result


if __name__ == '__main__':
    datas = [
        [],
    ]
    for data_test in datas:
        t0 = time.time()
        print('-' * 50)
        print('input:', data_test)
        print('output:', test(data_test))
        print(f'use time:{
      time.time() - t0}s')

remarks :
GitHub:https://github.com/monijuan/leetcode_python

CSDN Summary : Simulation volume Leetcode Summary of questions

You can add QQ Group communication :1092754609

leetcode_python.utils See the description on the summary page for details
First brush questions , Then generated by script blog, If there is any mistake, please leave a message , I see it will be revised ! thank you !

原网站

版权声明
本文为[Encounter simulation volume]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060615157316.html