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