zoukankan      html  css  js  c++  java
  • 【leetcode】1415. The k-th Lexicographical String of All Happy Strings of Length n

    题目如下:

    A happy string is a string that:

    • consists only of letters of the set ['a', 'b', 'c'].
    • s[i] != s[i + 1] for all values of i from 1 to s.length - 1 (string is 1-indexed).

    For example, strings "abc", "ac", "b" and "abcbabcbcb" are all happy strings and strings "aa", "baa" and "ababbc" are not happy strings.

    Given two integers n and k, consider a list of all happy strings of length n sorted in lexicographical order.

    Return the kth string of this list or return an empty string if there are less than k happy strings of length n.

    Example 1:

    Input: n = 1, k = 3
    Output: "c"
    Explanation: The list ["a", "b", "c"] contains all happy strings of length 1. The third string is "c".
    

    Example 2:

    Input: n = 1, k = 4
    Output: ""
    Explanation: There are only 3 happy strings of length 1.
    

    Example 3:

    Input: n = 3, k = 9
    Output: "cab"
    Explanation: There are 12 different happy string of length 3 ["aba", "abc", "aca", "acb", "bab", "bac", "bca", "bcb", "cab",
    "cac", "cba", "cbc"]. You will find the 9th string = "cab"

    Example 4:

    Input: n = 2, k = 7
    Output: ""
    

    Example 5:

    Input: n = 10, k = 100
    Output: "abacbabacb"

    Constraints:

    • 1 <= n <= 10
    • 1 <= k <= 100

    解题思路:n和k都很小,最简单的方法是把所有符合条件的string都求出来,排序后可得到结果。

    代码如下:

    class Solution(object):
        def getHappyString(self, n, k):
            """
            :type n: int
            :type k: int
            :rtype: str
            """
            queue = ['a','b','c']
    
            l = []
            while len(queue) > 0:
                item = queue.pop(0)
                if len(item) == n:
                    l.append(item)
                    continue
                if item[-1] == 'a':
                    queue.append(item + 'b')
                    queue.append(item + 'c')
                elif item[-1] == 'b':
                    queue.append(item + 'a')
                    queue.append(item + 'c')
                elif item[-1] == 'c':
                    queue.append(item + 'a')
                    queue.append(item + 'b')
    
            l.sort()
            if len(l) < k:
                return ''
            return l[k-1]
  • 相关阅读:
    react-umi 光速上手
    vue 和 react 的区别
    SP12323 NAKANJ
    UVA439 骑士的移动
    NOI 2020 Vlog
    二叉查找树
    可持久化线段树(主席树)
    权值线段树
    YNOI2020 游记
    《四月是你的谎言》语录
  • 原文地址:https://www.cnblogs.com/seyjs/p/12985249.html
Copyright © 2011-2022 走看看