কম্পিউটার

পাইথনে স্ট্রিং অক্ষর ব্যবহার করে আমরা অনন্য প্যালিনড্রোমের সংখ্যা গণনা করার প্রোগ্রাম


ধরুন আমাদের একটি স্ট্রিং s আছে, আমাদের আলাদা প্যালিনড্রোমের সংখ্যা খুঁজে বের করতে হবে যা আমরা সমস্ত অক্ষর ব্যবহার করে তৈরি করতে পারি। যদি উত্তরটি খুব বড় হয় তবে ফলাফলটি 10^9 + 7 দ্বারা পরিবর্তন করুন।

সুতরাং, যদি ইনপুটটি s ="xyzzy" এর মত হয়, তাহলে আউটপুট হবে 2, যেমন আমরা "zyxyz" এবং "yzxzy" করতে পারি

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • m =10^9+7

  • char_freq :=s এর প্রতিটি অক্ষর এবং তাদের ফ্রিকোয়েন্সি ধারণ করা একটি মানচিত্র

  • বিজোড় :=0

  • char_freq-এ প্রতিটি অক্ষর k এবং ফ্রিকোয়েন্সি v এর জন্য, করুন

    • যদি v mod 2 1 হয়, তাহলে

      • বিজোড় :=বিজোড় + 1

  • যদি বিজোড়> 1, তাহলে

    • রিটার্ন 0

  • অর্ধ_দৈর্ঘ্য :=(s এর আকার) / 2

    এর ভাগফল
  • res :=অর্ধ_দৈর্ঘ্যের ফ্যাক্টরিয়াল

  • বিভাজক :=1

  • char_freq-এ প্রতিটি অক্ষর k এবং ফ্রিকোয়েন্সি v এর জন্য, করুন

    • ভাজক :=ভাজক * (v/2 এর ভাগফল)

      এর ফ্যাক্টরিয়াল
  • রিটার্ন (res/dividor এর ভাগফল) mod m


আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

<প্রে>ম্যাথ ইম্পোর্ট ফ্যাক্টোরিয়াল ক্লাস থেকে সমাধান:def solve(self, s):m =(10**9+7) char_freq ={} s তে c এর জন্য:char_freq[c] =char_freq.get(c, 0) + char_freq.items(এ k,v এর জন্য 1 বিজোড় =0):যদি v % 2 ==1:বিজোড় +=1 যদি বিজোড়> 1:রিটার্ন 0 half_length =len(s)//2 res =factorial(half_length) ভাজক char_freq.items() এ k,v এর জন্য =1:বিভাজক *=ফ্যাক্টোরিয়াল(v//2) রিটার্ন (res//dividor) % mob =Solution()print(ob.solve("xyzzy"))

ইনপুট

"xyzzy"

আউটপুট

2

  1. পাইথনে প্রতিটি বন্ধনী গভীরতায় অক্ষরের সংখ্যা গণনা করার প্রোগ্রাম

  2. পাইথন প্রোগ্রাম একটি প্রদত্ত স্ট্রিং এর সেট ব্যবহার করে স্বর সংখ্যা গণনা করার জন্য

  3. পাইথন প্রোগ্রাম একটি স্ট্রিং সব অনন্য অক্ষর আছে কিনা তা পরীক্ষা করতে

  4. পাইথন ব্যবহার করে একটি স্ট্রিংয়ে স্বরবর্ণের সংখ্যা কীভাবে গণনা করবেন?