Cho chuỗi chữ thường, tìm tất cả chuỗi con chỉ chứa nguyên âm (a,e,i,o,u) và có đủ 5 nguyên âm ít nhất 1 lần.
Ví dụ: "helloworldaeiouaiunicestring" → ['aeiou', 'aeioua', 'aeiouai', 'aeiouaiu', 'eioua', 'eiouai', 'eiouaiu'].
Giải thuật
- Duyệt vị trí bắt đầu i.
- Mở rộng j từ i, dừng khi gặp phụ âm.
- Dùng set/dict theo dõi nguyên âm đã thấy.
- Khi set có 5 phần tử, in chuỗi con s[i:j+1].
Ví dụ
def isVowel(x):
return x in 'aeiou'
def get_substrings(s):
n = len(s)
for i in range(n):
seen = set()
for j in range(i, n):
if not isVowel(s[j]):
break
seen.add(s[j])
if len(seen) == 5:
print(s[i:j+1])
s = "helloworldaeiouaiunicestring"
get_substrings(s)Đầu vào
"helloworldaeiouaiunicestring"
Đầu ra
aeiou aeioua aeiouai aeiouaiu eioua eiouai eiouaiu