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

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


สมมติว่าเรามีสตริง s และ t สองสายที่มีความยาวเท่ากัน พิจารณาการดำเนินการที่เราเลือกสองดัชนีในสตริง (ไม่จำเป็นต้องต่างกัน) และสลับอักขระที่ดัชนีที่เลือก เราต้องตรวจสอบว่าเป็นไปได้หรือไม่ที่จะทำให้ทั้งสองสตริงเหมือนกันโดยทำการสลับสตริงอย่างมากที่สุดหนึ่งสตริงกับสตริงใดสตริงหนึ่งเท่านั้น

ดังนั้น หากอินพุตเป็น s ="hello" t ="hlelo" ผลลัพธ์จะเป็น True เพราะเราต้องสลับ 'e' และ 'l' ที่ s หรือ t เพื่อให้เท่ากัน

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

  • max_diffs:=2

  • แตกต่าง:=0

  • st :=ชุดใหม่

  • st2 :=ชุดใหม่

  • สำหรับฉันในช่วง 0 ถึงขนาด s ทำ

    • ถ้า s[i] ไม่เหมือนกับ t[i] แล้ว

      • แตกต่าง :=แตกต่าง + 1

    • ถ้า s[i] ไม่มีอยู่ใน st แล้ว

      • แทรก s[i] ลงใน st

    • ถ้า t[i] ไม่มีอยู่ใน st2 แล้ว

      • ใส่ t[i] ลงใน st2

    • ถ้า diffs> max_diffs แล้ว

      • คืนค่าเท็จ

  • คืนค่า true ถ้า (diffs เหมือนกับ 0 หรือ diffs เหมือนกับ 2) และขนาดของ st เท่ากับขนาดของ st2 และ st เหมือนกับ st2 ไม่เช่นนั้นจะเป็นเท็จ

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

ตัวอย่าง

def solve(s, t):
   max_diffs=2
   diffs=0
   st = set()
   st2 = set()
   for i in range(len(s)):
      if s[i] != t[i]:
         diffs+=1
      if s[i] not in st:
         st.add(s[i])
      if t[i] not in st2:
         st2.add(t[i])
      if diffs > max_diffs:
         return False
   return (diffs == 0 or diffs == 2) and len(st) == len(st2) and st == st2
s = "hello"
t = "hlelo"
print(solve(s, t))

อินพุต

"hello", "hlelo"

ผลลัพธ์

True