สมมติว่าเรามีสตริงที่เป็นตัวพิมพ์เล็ก เราต้องหาสตริงย่อยที่มีสระทั้งหมดอย่างน้อยหนึ่งครั้ง และไม่มีพยัญชนะในสตริงย่อยนั้น
ดังนั้น หากอินพุตเป็นเหมือน "helloworldaeiouaieuonicestring" ผลลัพธ์จะเป็น ['aeiou', 'aeioua', 'aeiouai', 'aeiouaiu', 'eioua', 'eiouai', 'eiouaiu']
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
n :=ขนาดของ s
-
สำหรับผมอยู่ในช่วง 0 ถึง n ทำ
-
my_map :=แผนที่ใหม่
-
สำหรับ j ในช่วง i ถึง n ทำ
-
ถ้า s[j] ไม่ใช่สระแล้ว
-
ออกจากวง
-
-
my_map[s[j]] :=1
-
ถ้าขนาดของ my_map เท่ากับ 5 แล้ว
-
แสดง s[จากดัชนี i ถึง j + 1]
-
-
-
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def isVowel(x): if x in ['a','e','i','o','u']: return True return False def get_substrings(s): n = len(s) for i in range(n): my_map = dict() for j in range(i, n): if (isVowel(s[j]) == False): break my_map[s[j]] = 1 if (len(my_map) == 5): print(s[i:j + 1]) s = "helloworldaeiouaiunicestring" get_substrings(s)
อินพุต
"helloworldaeiouaiunicestring"
ผลลัพธ์
aeiou aeioua aeiouai aeiouaiu eioua eiouai eiouaiu