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

โปรแกรมที่จะตรวจสอบว่ามีการเรียงสับเปลี่ยนใด ๆ ที่ใหญ่กว่าหรือไม่ระหว่างสองสตริงในPython


สมมติว่าเรามีสองสตริง s และ t ที่มีขนาดเท่ากัน เราต้องตรวจสอบว่ามีการเรียงสับเปลี่ยนของ s หรือไม่ พูดว่า s1 และการเปลี่ยนลำดับของ t พูด t1 เช่น s1[i] ≤ t1[i] สำหรับทุกคน 0 ≤ i

ดังนั้น หากอินพุตเป็น s ="vyx" t ="wzx" ผลลัพธ์จะเป็น True เนื่องจากเราสามารถมี s1 ="vxy" และ t1 ="wxz" ได้

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

  • ถ้า s กับ t ว่าง งั้น
    • คืนค่า True
  • s :=จัดเรียงสตริง s
  • t :=เรียงลำดับสตริง t
  • กำหนดฟังก์ชัน util() นี่จะใช้เวลา s1, s2
  • สำหรับฉันในช่วง 0 ถึงขนาด s1 ทำ
    • ถ้า s1[i]> t1[i] แล้ว
      • คืนค่าเท็จ
  • คืนค่า True
  • จากวิธีหลัก ให้ทำดังนี้ -
  • ถ้า util(s, t) เป็นจริง แล้ว
    • คืนค่า True
  • สลับ s และ t
  • ผลตอบแทน util(s, t)

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

ตัวอย่าง

class Solution:
   def solve(self, s, t):
      if not len(s) or not len(t):
         return True
         s = sorted(s)
         t = sorted(t)
   def util(s1, t1):
      for i in range(len(s1)):
         if s1[i] > t1[i]:
            return False
         return True
         if util(s, t):
            return True
      s, t = t, s
      return util(s, t)
ob = Solution()
s = "vyx"
t = "wzx"
print(ob.solve(s, t))

อินพุต

"vyx", "wzx"

ผลลัพธ์

True