leetcode-5374-长度为 n 的开心字符串中字典序第 k 小的字符串

题目描述:

 

 提交:

class Solution:
    def getHappyString(self, n: int, k: int) -> str:
        strlist = []
        def helper(n, s):
            if len(s) == n:
                strlist.append(s)
                return
            for c in ['a', 'b', 'c']:
                if len(s) > 0 and s[-1] != c:
                    helper(n, s + c)
                elif not s:
                    helper(n,s + c)
        helper(n,"")
        if k <= len(strlist):
            return strlist[k-1]
        else:
            return ""
                

优化:提前终止

class Solution:
    def getHappyString(self, n: int, k: int) -> str:
        cnt = 0
        for i in range(3**n):
            s = ""
            for x in range(n):
                s = "abc"[i//3**x%3]+s
            flag = True
            for i in range(1, len(s)):
                if s[i] == s[i-1]: flag = False
            #print(s)
            if flag:
                #print(s)
                cnt += 1
                if cnt == k:
                    return s
        return ""

 

posted @ 2020-04-19 10:29  oldby  阅读(376)  评论(0编辑  收藏  举报