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

โปรแกรมค้นหาสตริงย่อยที่ยาวที่สุดของสระทั้งหมดตามลำดับใน Python


สมมติว่าเรามีสตริง s ที่มีสระภาษาอังกฤษเท่านั้น เราต้องหาความยาวของสตริงย่อยที่ยาวที่สุดที่สวยงามของ s หากเราหาสตริงย่อยดังกล่าวไม่พบ ให้คืนค่า 0 สตริงจะเรียกว่าสวยงามหากเป็นไปตามเงื่อนไขต่อไปนี้ -

  • สระทั้ง 5 ตัวต้องปรากฏอย่างน้อยหนึ่งครั้งในสระ

  • ตัวอักษรต้องเรียงตามลำดับตัวอักษร

ดังนั้น หากอินพุตเป็น s ="aaioaaaaeiiouuooauauu" ผลลัพธ์จะเป็น 10 เพราะสตริงย่อยคือ "aaaaeiiouu" ซึ่งสวยงาม

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • สระ :=รายการสระทั้งหมด ['a', 'e', ​​'i', 'o', 'u']

  • l :=0, r :=0, ยาวที่สุด :=0

  • ในขณะที่ l <ขนาดของ s ทำ

    • ถูกต้อง :=จริง

    • สำหรับแต่ละสระในสระ ทำ

      • valid :=valid is true และ (r

      • ในขณะที่ r <ขนาดของ s และ s[r] เหมือนกับสระ ให้ทำ

        • r :=r + 1

    • ถ้าถูกต้องเป็นจริงแล้ว

      • ยาวที่สุด :=สูงสุดของยาวที่สุดและ (r - l)

    • l :=r

  • กลับมานานที่สุด

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

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))

อินพุต

"aaioaaaaeiiouuooaauu"

ผลลัพธ์

10