मान लीजिए हमारे पास अलग-अलग शब्दों की एक सूची है। हमें उन अलग-अलग तरीकों की संख्या ज्ञात करनी है जिनसे हम दी गई सूची से दो अलग-अलग शब्दों को जोड़कर एक पैलिंड्रॉम बना सकते हैं।
उदाहरण के लिए, words = ["time", "emit", "mo", "m"] के लिए आउटपुट 3 होगा ("timeemit", "emittime", "mom")।
एल्गोरिदम (ब्रूट फोर्स)
res := 0, ln := len(words)- दो पास (
k=0,1) के लिए:i=0 से ln-1, j=i+1 से ln-1तक:- यदि
words[i]+words[j]पैलिंड्रॉम है, तोres++
- यदि
words := words[::-1](रिवर्स करें)
resवापस करें
उदाहरण
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