ধরুন আমাদের একটি বাইনারি স্ট্রিং s আছে। আমাদের কেবলমাত্র "1" ধারণ করে এমন সাবস্ট্রিংগুলির সংখ্যা খুঁজে বের করতে হবে। উত্তরটি খুব বড় হলে, ফলাফলটি 10^9+7 দ্বারা পরিবর্তন করুন।
সুতরাং, যদি ইনপুটটি s ="100111" এর মত হয়, তাহলে আউটপুট হবে 7, কারণ শুধুমাত্র "1" s যুক্ত সাবস্ট্রিংগুলি হল ["1", "1", "1", "1", "11" , "11" এবং "111"]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- a :=0
- গণনা :=0
- আমি 0 থেকে s - 1 এর পরিসরের জন্য, কর
- যদি s[i] "0" এর মত হয়, তাহলে
- a :=0
- অন্যথায়,
- a :=a + 1
- গণনা :=গণনা + a
- যদি s[i] "0" এর মত হয়, তাহলে
- রিটার্ন গণনা
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
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))
ইনপুট
"100111"
আউটপুট
7