【leetcode】1663. Smallest String With A Given Numeric Value
题目如下:
The numeric value of a lowercase character is defined as its position
(1-indexed)in the alphabet, so the numeric value ofais1, the numeric value ofbis2, the numeric value ofcis3, and so on.The numeric value of a string consisting of lowercase characters is defined as the sum of its characters' numeric values. For example, the numeric value of the string
"abe"is equal to1 + 2 + 5 = 8.You are given two integers
nandk. Return the lexicographically smallest string with length equal tonand numeric value equal tok.Note that a string
xis lexicographically smaller than stringyifxcomes beforeyin dictionary order, that is, eitherxis a prefix ofy, or ifiis the first position such thatx[i] != y[i], thenx[i]comes beforey[i]in alphabetic order.Example 1:
Input: n = 3, k = 27 Output: "aay" Explanation: The numeric value of the string is 1 + 1 + 25 = 27, and it is the smallest string with such a value and length equal to 3.Example 2:
Input: n = 5, k = 73 Output: "aaszz"Constraints:
1 <= n <= 105n <= k <= 26 * n
解题思路:贪心算法, 每一位先用a尝试,如果剩余部分全部用z的话所组成的和扔小于k,接下来尝试b,c....只能找出满足条件的值为止。
代码如下:
class Solution(object): def getSmallestString(self, n, k): """ :type n: int :type k: int :rtype: str """ res = '' alphabet = [''] + [chr(i) for i in range(97,123)] while n > 0: if (n - 1) * 26 >= k: res += 'a' k -= 1 else: val = k - (n - 1) * 26 res += alphabet[val] k -= val n -= 1 return res
浙公网安备 33010602011771号