কম্পিউটার টিউটোরিয়াল

Python দিয়ে স্ট্রিং স্প্লিট করার ভালো উপায় সংখ্যা বের করার প্রোগ্রাম


মান লাগিয়ে, আমাদের একটি স্ট্রিং s আছে। একটি স্প্লিটকে ভালো স্প্লিট বলা হয় যখন s কে ২টি নন-এম্পটি স্ট্রিং p এবং q-তে স্প্লিট করা যায় যাতে তাদের কনক্যাটিনেশন s-র সমান হয় এবং p এবং q-তে ডিস্টিংচ লেটারের সংখ্যা সমান হয়। আমাদের s-তে কতগুলো ভালো স্প্লিট করা যায় তা বের করতে হবে।

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

এটি সমাধান করতে আমরা নিচের ধাপগুলো অনুসরণ করব:

  • result := 0
  • left := একটি খালি কাউন্টার ফ্রিকোয়েন্সি গুনতে
  • right := s-এ থাকা প্রতিটি ক্যারেক্টারের ফ্রিকোয়েন্সি কাউন্ট
  • s-এ থাকা প্রতিটি c জন্য:
    • left[c] := left[c] + 1
    • right[c] := right[c] - 1
    • যদি right[c] শূন্য হয়, তবে right[c] ডিলিট করুন
    • যদি left এবং right-এর আকার সমান হয়, তবে result := result + 1
  • result রিটার্ন করুন

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশন দেখুন:

উদাহরণ

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. Python দিয়ে বাইনারি ট্রিতে ভালো লিফ নোড পেয়ার সংখ্যা বের করার প্রোগ্রাম

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

  3. পাইথনে প্যালিনড্রোম স্ট্রিং বিভাজনের উপায় সংখ্যা

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