Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Kiểm tra xem chuỗi có phải là tên được gõ với phím nhấn lâu hay không trong Python


Giả sử chúng ta có hai chuỗi chữ thường s và t. Đôi khi khi gõ nguyên âm, phím có thể bị nhấn lâu khiến nguyên âm lặp lại 1 hoặc nhiều lần. Cần kiểm tra xem t có thể là chuỗi được gõ để biểu diễn s hay không.

Ví dụ, s = "mine", t = "miiine", đầu ra True vì nguyên âm 'i' bị lặp 3 lần, các ký tự khác bình thường.

Các bước giải quyết:

  • s_len := độ dài s, t_len := độ dài t.
  • j := 0.
  • Duyệt i từ 0 đến s_len-1:
    • Nếu s[i] != t[j], trả về False.
    • Nếu s[i] không phải nguyên âm: j += 1, tiếp tục.
    • cnt_1 := 1. Trong khi i < s_len-1 và s[i] == s[i+1]: cnt_1++, i++.
    • cnt_2 := 1. Trong khi j < t_len-1 và t[j] == s[i]: cnt_2++, j++.
    • Nếu cnt_1 > cnt_2, trả về False.
  • Trả về True.

Xem ví dụ dưới đây để hiểu rõ hơn:

Ví dụ

def isVowel(c):
    vowel = "aeiou"
    return c in vowel

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))

Đầu vào

"mine", "miiine"

Đầu ra

True