Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมค้นหาสตริงที่เล็กที่สุดด้วยค่าตัวเลขที่กำหนดใน Python


สมมติว่าเรามีสองค่า n และ k เราต้องหาสตริงที่เล็กที่สุดเกี่ยวกับศัพท์เฉพาะซึ่งมีความยาวเป็น n และค่าตัวเลขเท่ากับ k ค่าตัวเลขของอักขระตัวพิมพ์เล็กคือตำแหน่ง (เริ่มจาก 1) ในตัวอักษร ดังนั้นค่าตัวเลขของอักขระ 'a' คือ 1 ค่าตัวเลขของอักขระ 'b' คือ 2 เป็นต้น และค่าตัวเลขของสตริงที่ประกอบด้วยตัวพิมพ์เล็กคือผลรวมของค่าตัวเลขของอักขระนั้น

ดังนั้น หากอินพุตเป็น n =4 k =16 เอาต์พุตจะเป็น "aaam" เพราะในที่นี้ ค่าตัวเลขคือ 1+1+1+13 =16 และนี่เป็นสตริงที่เล็กที่สุดโดยมีค่าและความยาวเท่ากับ 4.

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • สตริง :=สตริงว่าง
  • ในขณะที่ n> 0 ไม่ใช่ศูนย์ ให้ทำ
    • letter :=ขั้นต่ำ 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