Python程式:查詢給定數值的最小字串


假設我們有兩個值 n 和 k。我們需要找到一個字典序最小的字串,其長度為 n 且數值等於 k。小寫字元的數值是其在字母表中的位置(從 1 開始),因此字元 'a' 的數值為 1,字元 'b' 的數值為 2,依此類推。由小寫字元組成的字串的數值是其字元數值的總和。

所以,如果輸入類似於 n = 4 k = 16,那麼輸出將是 "aaam",因為這裡的數值是 1+1+1+13 = 16,這是具有此值且長度為 4 的最小字串。

為了解決這個問題,我們將遵循以下步驟:

  • 字串 := 空字串
  • 當 n > 0 非零時,執行以下操作:
    • 字母 := 26 和 k-n+1 中的最小值
    • 字串 := 字串連線來自字母表位置值字母的對應字母
    • k := k - 字母
    • n := n - 1
  • 反轉字串並返回

示例

讓我們看看以下實現,以便更好地理解:

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))

輸入

4, 16

輸出

aaam

更新於: 2021年10月5日

400 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.