สมมติว่าเรามีรายชื่อคำที่แตกต่างกัน เราต้องหาจำนวนวิธีต่างๆ ที่เราสามารถเชื่อมคำสองคำที่ต่างกันจากรายการคำที่กำหนดเพื่อสร้างพาลินโดรมได้
ดังนั้น ถ้าอินพุตเป็นเหมือนคำ =["เวลา", "ปล่อย", "โม", "ม"] ผลลัพธ์จะเป็น 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