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

পাইথনে যাচাই করুন স্ট্রিং টাইপড নামের সাথে মেলে কিনা (বাওয়েল রিপিট সহ)

ধরুন, দুটি লোয়ারকেস স্ট্রিং 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
  1. দেওয়া স্ট্রিংটি ভয়েল প্যালিনড্রোম কিনা চেক করার পাইথন প্রোগ্রাম

  2. দেওয়া স্ট্রিংটি পাইথন কিওয়ার্ড কিনা চেক করার প্রোগ্রাম

  3. পাইথনে স্ট্রিং প্যাংগ্রাম (Pangram) কিনা চেক করা

  4. পাইথনে সাবস্ট্রিং স্ট্রিংয়ে উপস্থিত কিনা যাচাই করার প্রোগ্রাম