Giả sử chúng ta có một chuỗi s chỉ có các nguyên âm tiếng Anh, chúng ta phải tìm độ dài của chuỗi con đẹp nhất của s. Nếu chúng ta không thể tìm thấy chuỗi con như vậy, hãy trả về 0. Một chuỗi được cho là đẹp nếu nó thỏa mãn các điều kiện sau -
-
Mỗi nguyên âm trong số 5 nguyên âm phải xuất hiện ít nhất một lần trong đó.
-
Các chữ cái phải được sắp xếp theo thứ tự bảng chữ cái
Vì vậy, nếu đầu vào là s ="aaioaaaaeiiouuooaauu", thì đầu ra sẽ là 10 vì chuỗi con là "aaaaeiiouu" đẹp.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
nguyên âm:=danh sách tất cả các nguyên âm ['a', 'e', 'i', 'o', 'u']
-
l:=0, r:=0, dài nhất:=0
-
trong khi l
-
hợp lệ:=True
-
đối với mỗi nguyên âm trong các nguyên âm, hãy làm
-
valid:=valid là true và (r
-
trong khi r
-
r:=r + 1
-
-
-
nếu hợp lệ là true thì
-
dài nhất:=tối đa của dài nhất và (r - l)
-
-
l:=r
-
-
trả về lâu nhất
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def solve(s): vowels = ['a', 'e', 'i', 'o', 'u'] l, r, longest = 0, 0, 0 while (l < len(s)): valid = True for vowel in vowels: valid &= (r < len(s) and s[r] == vowel) while (r < len(s) and s[r] == vowel): r += 1 if (valid): longest = max(longest, r - l) l = r return longest s = "aaioaaaaeiiouuooaauu" print(solve(s))
Đầu vào
"aaioaaaaeiiouuooaauu"
Đầu ra
10