ধরুন আমরা একটি স্ট্রিং s আছে. সেই স্ট্রিংয়ের একটি অ্যানাগ্রাম প্যালিনড্রোম তৈরি করছে কিনা তা আমাদের পরীক্ষা করতে হবে।
সুতরাং, যদি ইনপুটটি s ="aarcrec" এর মত হয়, তাহলে আউটপুট হবে True এই স্ট্রিংটির একটি অ্যানাগ্রাম হল "racecar" যা প্যালিনড্রোম।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- freq :=সমস্ত অক্ষর এবং তাদের ফ্রিকোয়েন্সি সংরক্ষণ করার জন্য একটি মানচিত্র
- বিজোড়_গণনা :=0
- ফ্রিকারের সমস্ত মানের তালিকায় প্রতিটি f-এর জন্য, করুন
- যদি f বিজোড় হয়, তাহলে
- odd_count :=odd_count + 1
- যদি f বিজোড় হয়, তাহলে
- যদি odd_count> 1 হয়, তাহলে
- মিথ্যে ফেরত দিন
- সত্য ফেরান
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
from collections import defaultdict def solve(s): freq = defaultdict(int) for char in s: freq[char] += 1 odd_count = 0 for f in freq.values(): if f % 2 == 1: odd_count += 1 if odd_count > 1: return False return True s = "aarcrec" print(solve(s))
ইনপুট
"aarcrec"
আউটপুট
True