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

โปรแกรมตรวจสอบว่าสตริงสุดท้ายสามารถสร้างโดยใช้สองสตริงอื่นได้หรือไม่ในPython


สมมติว่าเรามีสองสตริง s, t และอีกสตริง r เราต้องตรวจสอบว่ามีวิธีใดที่จะได้ r โดยการรวมอักขระตามลำดับจาก s และ t

ดังนั้น หากอินพุตเป็น s ="xyz" t ="mno" r ="xymnoz" ผลลัพธ์จะเป็น True เนื่องจาก xymnoz สามารถเกิดขึ้นได้จากการแทรกระหว่าง xyz และ mno

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

  • กำหนดฟังก์ชัน Solve() นี่จะใช้เวลา s, t, r

  • ถ้า s, t และ r ว่างเปล่า แสดงว่า

    • คืนค่า True

      • ถ้า r ว่างเปล่า แสดงว่า

        • คืนค่าเท็จ

  • ถ้า s ว่างแล้ว

    • คืนค่า จริง เมื่อ t เหมือนกับ r มิฉะนั้น เท็จ

  • ถ้าไม่ใช่ t ก็ไม่ใช่ศูนย์ ดังนั้น

    • ผลตอบแทน s เหมือนกับ r

  • ถ้า s[0] เหมือนกับ r[0] แล้ว

    • ถ้าแก้(s[จากดัชนี 1 ถึงจุดสิ้นสุด], t, r[จากดัชนี 1 ถึงจุดสิ้นสุด]) เป็นจริง ดังนั้น

      • คืนค่า True

  • ถ้า t[0] เหมือนกับ r[0] แล้ว

    • ถ้าแก้ (s, t[จากดัชนี 1 ถึงสิ้นสุด], r[จากดัชนี 1 ถึงสิ้นสุด]) เป็นจริง ดังนั้น

      • คืนค่า True

  • คืนค่าเท็จ

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

ตัวอย่าง

class Solution:
   def solve(self, s, t, r):
      if not s and not t and not r:
         return True
      if not r:
         return False
      if not s:
         return t == r
      if not t:
         return s == r
      if s[0] == r[0]:
         if self.solve(s[1:], t, r[1:]):
            return True
         if t[0] == r[0]:
            if self.solve(s, t[1:], r[1:]):
               return True
         return False
ob = Solution()
s = "xyz"
t = "mno"
r = "xymnoz"
print(ob.solve(s, t, r))

อินพุต

"xyz", "mno", "xymnoz"

ผลลัพธ์

True