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

การผสานสองสตริงที่ใหญ่ที่สุดใน Python


สมมติว่าเรามีสตริง 'a' และ 'b' สองสตริง และสตริง 'merge' งานคือการเติมสตริง 'ผสาน' ด้วยอักขระจาก 'a' และ 'b' ในลักษณะที่

  • หากสตริง 'a' ไม่ว่างเปล่า ให้ลบอักขระตัวแรกออกจากสตริง 'a' และคัดลอกลงในสตริง 'merge'
  • หากสตริง 'b' ไม่ว่างเปล่า ให้ลบอักขระตัวแรกออกจากสตริง 'b' และคัดลอกลงในสตริง 'merge'
  • หากสตริง 'a' และ 'b' ไม่ว่าง ให้ลบอักขระตัวแรกออกจากสตริง 'a' และคัดลอกลงในสตริง 'merge' แล้วลบอักขระตัวแรก (ถ้ามี) ออกจากสตริง 'b ' และคัดลอกลงในสตริง 'ผสาน'
  • ลบอักขระออกจากสตริงทั้งสองแบบตามลำดับศัพท์ ซึ่งหมายความว่า หากสตริง 'a' มากกว่าสตริง 'b' ให้ลบอักขระออกจากสตริง 'a' ตามด้วยสตริง 'b'
  • ส่งคืนสตริง 'ผสาน'

ตัวอย่าง

อินพุต-1:

a = “bacaa”

b = “abcaa”

ผลลัพธ์:

babcacaaaa

คำอธิบาย:

เนื่องจากสตริงที่กำหนด 'a' มีความหมายมากกว่าสตริง 'b' เราจะแยกอักขระตัวแรกออกจากสตริง 'a' นั่นคือ "b" และจากสตริง 'b' หลังจากแตกสตริงแล้วจะเป็น “babcacaaaa”

แนวทางแก้ไขปัญหานี้

วิธีการแบบเรียกซ้ำในการแก้ปัญหานี้คือเราจะแยกอักขระแต่ละตัวของสตริง 'a' และสตริง 'b' และจะตรวจสอบว่าอักขระของสตริง 'a' มีคำศัพท์มากกว่าสตริงอื่นหรือไม่ และสุดท้ายเชื่อมกับสตริง 'ผสาน' .

เราจะค้นหาสตริงย่อยของอักขระแต่ละตัวหลังจากจำนวนตำแหน่งและเชื่อมเข้าด้วยกันเป็น 'การผสาน' หากอักขระนั้นมีค่ามากกว่าสตริงอื่น

  • รับสองสตริงอินพุต 'a' และ 'b'
  • ฟังก์ชันสตริงแบบเรียกซ้ำ concatenateLargest(string a, string b) รับสองสตริงเป็นอินพุตและส่งกลับสตริงที่ใหญ่ที่สุดหลังจากการต่อกัน นั่นคือ (สตริง 'a' + สตริง 'b')
  • ถ้า 'a> b' ให้แยกสตริง 'a' ด้วยตำแหน่ง '0' และส่งคืนผลลัพธ์จากสตริง 'a'
  • ถ้า 'a
  • ส่งคืนสตริงที่ต่อกัน

ตัวอย่าง

def concatenateLargest(a, b):
   ans = ""
   while a and b:
      if a > b:
         ans = a[0]
         a = a[1:]
      else:
         ans = b[0]
         b = b[1:]
   ans = a
   ans = b
   return ans
a = "bacaa"
b = "abcaa"
print(concatenateLargest(a, b))

การเรียกใช้โค้ดด้านบนจะสร้างผลลัพธ์เป็น

ผลลัพธ์

bacabcaaaa

สองสตริง “bacaa” และ “abcaa” จะกลายเป็น “bacabcaaaa” หลังจากรวมกันตามปัญหาที่กำหนด