ধরুন আমাদের কাছে স্বতন্ত্র শব্দের একটি তালিকা আছে, আমাদেরকে প্যালিনড্রোম তৈরি করার জন্য প্রদত্ত শব্দের তালিকা থেকে দুটি ভিন্ন শব্দকে একত্রিত করতে বিভিন্ন উপায়ের সংখ্যা খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুট শব্দের মত হয় =["time", "emit", "mo", "m"], তাহলে আউটপুট হবে 3, যেমন আমরা "timeemit", "emittime" এবং "mom" করতে পারি। .
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
res :=0
-
ln :=অ্যারেতে শব্দের সংখ্যা
-
k এর জন্য 0 থেকে 1 রেঞ্জে, করুন
-
আমি 0 থেকে ln − 1 রেঞ্জের জন্য, কর
-
j-এর জন্য i + 1 থেকে ln − 1, করুন
-
res :=res + (1 যখন শব্দ[i] সংযুক্ত শব্দগুলি[j] প্যালিনড্রোম হয়, অন্যথায় 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