ধরুন একটি স্ট্রিং s আছে "x", "y", "z" দিয়ে। আমাদের সাবসিকোয়েন্সের সংখ্যা বের করতে হবে যাতে i সংখ্যক "x", তারপর j সংখ্যক "y", তারপর k সংখ্যক "z" থাকে (i, j, k ≥ 1)।
ইনপুট: s = "xxyz" → আউটপুট: 3 (দুটি "xyz" এবং একটি "xxyz")।
সমাধান পদ্ধতি
- n := s-এর সাইজ
- x := 0, y := 0, z := 0
- i = 0 থেকে n-1 পর্যন্ত লুপ
- যদি s[i] == "x": x = x*2 + 1
- যদি s[i] == "y": y = y*2 + x
- যদি s[i] == "z": z = z*2 + y
- z ফেরত দিন
বাস্তবায়ন
class Solution:
def solve(self, s):
n = len(s)
x = 0
y = 0
z = 0
for i in range(n):
if s[i] == "x":
x *= 2
x += 1
if s[i] == "y":
y *= 2
y += x
if s[i] == "z":
z *= 2
z += y
return z
ob = Solution()
print(ob.solve("xxyz"))
ইনপুট
"xxyz"
আউটপুট
3