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

โปรแกรมค้นหาการรวมสองสตริงที่ใหญ่ที่สุดใน Python


สมมติว่าเรามีสองสตริง s และ t เราต้องการสร้างสตริงที่เรียกว่า merge ด้วยวิธีต่อไปนี้ ในขณะที่ s หรือ t ว่างเปล่า ให้เลือกตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้ -

  • หาก s ไม่ว่าง ให้ผนวกอักขระตัวแรกใน s เพื่อรวมและลบออกจาก s

  • หาก t ไม่ว่าง ให้ผนวกอักขระตัวแรกใน t เพื่อรวมและลบออกจาก t

สุดท้าย เราต้องหาการรวมคำศัพท์ที่ใหญ่ที่สุดที่เราสร้างขึ้นได้

ดังนั้น หากอินพุตเป็น s ="zxyxx" t ="yzxxx" เอาต์พุตจะเป็น "zyzxyxxxxx"

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

  • a :=0, b :=0

  • ผสาน :=สตริงว่าง

  • W1 :=ขนาดของ s

  • W2 :=ขนาดของเสื้อ

  • ในขณะที่ a

    • ถ้าสตริงย่อยของ s จากดัชนี a ถึงปลาย> สตริงย่อยของ t จากดัชนี b ถึงจุดสิ้นสุด ดังนั้น

      • ผสาน :=ผสานเชื่อม s[a]

      • a :=a + 1

    • มิฉะนั้น

      • ผสาน :=ผสานเชื่อม t[b]

      • b :=b + 1

  • ส่งคืนการรวม concatenate (สตริงย่อยของ s จากดัชนี a ไปยังจุดสิ้นสุด) เชื่อมติดกัน (สตริงย่อยของ t จากดัชนี b ไปยังจุดสิ้นสุด)

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

def solve(s, t):
   a = b = 0
   merge = ""

   W1 = len(s)
   W2 = len(t)
   while a < W1 and b < W2:
      if s[a:] > t[b:]:
         merge += s[a]
         a += 1
      else:
         merge += t[b]
         b += 1

   return merge + s[a:] + t[b:]

s = "zxyxx"
t = "yzxxx"
print(solve(s, t))

อินพุต

"zxyxx", "yzxxx"

ผลลัพธ์

zyzxyxxxxx