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

โปรแกรมค้นหาหลายวิธีในการต่อคำเพื่อสร้างพาลินโดรมใน Python


สมมติว่าเรามีรายชื่อคำที่แตกต่างกัน เราต้องหาจำนวนวิธีต่างๆ ที่เราสามารถเชื่อมคำสองคำที่ต่างกันจากรายการคำที่กำหนดเพื่อสร้างพาลินโดรมได้

ดังนั้น ถ้าอินพุตเป็นเหมือนคำ =["เวลา", "ปล่อย", "โม", "ม"] ผลลัพธ์จะเป็น 3 เนื่องจากเราสามารถสร้าง "timeemit", "emittime" และ "mom" ได้ .

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

  • res :=0

  • ln :=จำนวนคำในอาร์เรย์

  • สำหรับ k ในช่วง 0 ถึง 1 ทำ

    • สำหรับฉันอยู่ในช่วง 0 ถึง ln − 1 ทำ

      • สำหรับ j ในช่วง i + 1 ถึง ln − 1 ทำ

        • res :=res + (1 เมื่อคำ[i] เชื่อมคำ[j] เป็น palindrome มิฉะนั้น 0)

    • คำ :=คำในลำดับย้อนกลับ

  • ผลตอบแทน

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

ตัวอย่าง

class Solution:
   def solve(self, words):
      def is_palindrome(w1, w2):
         w3 = w1 + w2
         return w3 == w3[::−1]
      res = 0
      ln = len(words)
      for k in range(2):
         for i in range(ln):
            for j in range(i + 1, ln):
               res += is_palindrome(words[i], words[j])
            words = words[::−1]
      return res
ob = Solution()
words = ["time", "emit", "mo", "m"]
print(ob.solve(words))

อินพุต

["time", "emit", "mo", "m"]

ผลลัพธ์

3