【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 ofifrom1tos.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
nandk, consider a list of all happy strings of lengthnsorted in lexicographical order.Return the kth string of this list or return an empty string if there are less than
khappy strings of lengthn.
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 <= 101 <= 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]
浙公网安备 33010602011771号