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

পাইথনে বাইনারি স্ট্রিং-এ সব ১ থাকা সাবস্ট্রিংয়ের সংখ্যা বের করার প্রোগ্রাম

একটি বাইনারি স্ট্রিং s দেওয়া আছে। শুধু '১' ধারণকারী সাবস্ট্রিংগুলোর সংখ্যা বের করতে হবে। উত্তর বড় হলে ১০⁹+৭ মডুলো করুন।

সমস্যা উদাহরণ

ইনপুট: s = "100111"
আউটপুট: 7

ব্যাখ্যা: শুধু '১' ওয়ালা সাবস্ট্রিংগুলো: ["1", "1", "1", "1", "11", "11", "111"] (মোট ৭টি)।

সমাধানের পদ্ধতি (লিনিয়ার স্ক্যান)

  1. a = 0 (বর্তমান শুধু '১' ওয়ালা সাবস্ট্রিংয়ের দৈর্ঘ্য)
  2. count = 0
  3. প্রতিটি ক্যারেক্টার c ∈ s এর জন্য:
    • যদি c == '0': a = 0
    • অন্যথায়: a += 1, count += a
  4. count রিটার্ন করুন

পাইথন কোড

def solve(s):
    a = 0
    count = 0
    for i in range(len(s)):
        if s[i] == "0":
            a = 0
        else:
            a += 1
            count += a
    return count

s = "100111"
print(solve(s))  # আউটপুট: 7

টেস্ট কেস

ইনপুট: "100111"
আউটপুট: 7

ব্যাখ্যা: ধারাবাহিক '১'-এর লেন্থ L হলে সেটি L*(L+1)/2 টি সাবস্ট্রিং দেয়। এই অ্যালগরিদম O(n) টাইমে এটি গণনা করে।

  1. C#-এ স্ট্রিংয়ের সব সাবস্ট্রিং বের করা

  2. পাইথনে স্ট্রিং-এর সকল ভিন্ন উপস্ট্রিংয়ের সংখ্যা বের করার প্রোগ্রাম

  3. পাইথন প্রোগ্রাম - n নোড দিয়ে BST-এর সংখ্যা বের করুন

  4. পাইথনে দেওয়া ইনডেক্স অনুযায়ী স্ট্রিং শাফল করার প্রোগ্রাম