কম্পিউটার

পাইথন ব্যবহার করে একটি স্ট্রিং বিভক্ত করার জন্য ভাল উপায় খুঁজে বের করার জন্য প্রোগ্রাম


ধরুন আমরা একটি স্ট্রিং s আছে. এখন একটি বিভক্তিকে একটি ভাল বিভাজন বলা হয় যখন আমরা s কে 2টি অ-খালি স্ট্রিং p এবং q এ বিভক্ত করতে পারি যেখানে এর সংযোজন s এর সমান এবং p এবং q এর স্বতন্ত্র অক্ষরগুলির সংখ্যা সমান। আমাদের খুঁজে বের করতে হবে কতগুলো ভালো বিভাজন আমরা s-তে করতে পারি।

সুতরাং, যদি ইনপুটটি s ="xxzxyx" এর মতো হয়, তাহলে আউটপুট হবে 2 কারণ বিভক্ত করার একাধিক উপায় রয়েছে কিন্তু যদি আমরা ("xxz", "xyx") বা ("xxzx", "yx") এর মতো বিভক্ত করি। তাহলে তারা ভালো।

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

  • ফলাফল :=0

  • বাম :=আইটেমের ফ্রিকোয়েন্সি গণনা করার জন্য একটি খালি ম্যাল

  • ডান :=s

    এ উপস্থিত প্রতিটি অক্ষরের ফ্রিকোয়েন্সি গণনা করুন
  • প্রতিটি c-এর জন্য s, do

    • left[c] :=left[c] + 1

    • right[c] :=right[c] - 1

    • যদি ডান [c] শূন্য হয়, তাহলে

      • ডানদিকে সরান[c]

    • যদি বামের আকার ডানের আকারের সমান হয়, তাহলে

      • ফলাফল :=ফলাফল + 1

  • ফেরত ফলাফল

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

উদাহরণ

from collections import Counter
def solve(s):
   result = 0
   left, right = Counter(), Counter(s)
   for c in s:
      left[c] += 1
      right[c] -= 1
      if not right[c]:
         del right[c]
      if len(left) == len(right):
         result += 1
   return result
s = "xxzxyx"
print(solve(s))

ইনপুট

"xxzxyx"

আউটপুট

2

  1. পাইথন ব্যবহার করে ভাল লিফ নোড জোড়ার সংখ্যা খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে ভালো জোড়ার সংখ্যা খুঁজে বের করার প্রোগ্রাম

  3. আমরা পাইথনে একটি প্যালিনড্রোমকে বিভক্ত করতে পারি এমন কয়েকটি উপায় খুঁজে বের করার প্রোগ্রাম

  4. আমরা পাইথনে একটি বার্তা ডিকোড করতে পারি এমন কয়েকটি উপায় খুঁজে বের করার প্রোগ্রাম