ধরুন, দুটি লোয়ারকেস স্ট্রিং s এবং t দেওয়া হয়েছে। কখনো কখনো টাইপ করার সময় বাওয়েল (স্বরবর্ণ) কী লম্বে দবা থাকলে সেটি একাধিকবার রিপিট হয়ে যায়। আমাদের যাচাই করতে হবে যে t কি s-এর এই রিপিটেড সংস্করণ হতে পারে।
যেমন, ইনপুট s = "mine", t = "miiine" হলে আউটপুট হবে True, কারণ বাওয়েল 'i' তিনবার রিপিট হয়েছে, বাকি অক্ষর ঠিক আছে।
সমাধানের ধাপসমূহ
- দুটি পয়েন্টার
i(s-এর জন্য) এবংj(t-এর জন্য) দিয়ে ট্রাভার্স করুন। - যদি
s[i] != t[j]হয়, তবে False। - যদি
s[i]বাওয়েল নয়, তবেi++এবংj++। - যদি বাওয়েল হয়, তবে
s-এ ওt-এ সেটির কতবার রিপিট হয়েছে সেটা গুনুন (cnt_1এবংcnt_2)। - যদি
cnt_1 > cnt_2হয়, তবে False (কারণ t-তে s-র চেয়ে কম রিপিট থাকতে পারে না)। - শেষে
iএবংjউভয় স্ট্রিং-এ শেষ হলে True।
উদাহরণ কোড
def isVowel(c):
return c in "aeiou"
def solve(s, t):
s_len = len(s)
t_len = len(t)
j = 0
for i in range(s_len):
if s[i] != t[j]:
return False
if not isVowel(s[i]):
j += 1
continue
cnt_1 = 1
while i < s_len - 1 and s[i] == s[i+1]:
cnt_1 += 1
i += 1
cnt_2 = 1
while j < t_len - 1 and t[j] == s[i]:
cnt_2 += 1
j += 1
if cnt_1 > cnt_2:
return False
return True
s = "mine"
t = "miiine"
print(solve(s, t))
ইনপুট
"mine", "miiine"
আউটপুট
True