Find Smallest String with Given Numeric Value in Python



Suppose we have two values n and k. We have to find the lexicographically smallest string whose length is n and numeric value equal to k. The numeric value of a lowercase character is its position (starting from 1) in the alphabet, so the numeric value of character 'a' is 1, the numeric value of character 'b' is 2 and so on. And the numeric value of a string consisting of lowercase characters is the sum of its characters' numeric values.

So, if the input is like n = 4 k = 16, then the output will be "aaam" because here the numeric value is 1+1+1+13 = 16, and this is smallest string with such a value and length is 4.

To solve this, we will follow these steps −

  • string := blank string
  • while n > 0 is non-zero, do
    • letter := minimum of 26 and k-n+1
    • string := string concatenate corresponding letter from alphabet position value letter
    • k := k - letter
    • n := n - 1
  • reverse the string and return

Example

Let us see the following implementation to get better understanding −

Open Compiler
def solve(n, k): string = "" while n > 0: letter = min(26, k-n+1) string += chr(letter + ord('a') - 1) k -= letter n -= 1 return string[::-1] n = 4 k = 16 print(solve(n, k))

Input

4, 16

Output

aaam
Updated on: 2021-10-05T12:39:59+05:30

290 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements