Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ค้นหาสตริงย่อยที่มีสระทั้งหมดใน Python


สมมติว่าเรามีสตริงที่เป็นตัวพิมพ์เล็ก เราต้องหาสตริงย่อยที่มีสระทั้งหมดอย่างน้อยหนึ่งครั้ง และไม่มีพยัญชนะในสตริงย่อยนั้น

ดังนั้น หากอินพุตเป็นเหมือน "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