Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 모든 모음 중 가장 긴 부분 문자열을 순서대로 찾는 프로그램

<시간/>

영어 모음만 있는 문자열 s가 있다고 가정하고 s의 가장 긴 아름다운 부분 문자열의 길이를 찾아야 합니다. 그런 부분 문자열을 찾을 수 없으면 0을 반환합니다. 다음 조건을 만족하는 문자열은 아름답다고 합니다 -

  • 5개의 모음 각각은 적어도 한 번은 등장해야 합니다.

  • 문자는 알파벳 순서로 정렬되어야 합니다.

따라서 입력이 s ="aaioaaaaeiiouuooaauu"와 같으면 하위 문자열이 "aaaaeiiouu"이므로 출력은 10이 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 모음 :=모든 모음 목록 ['a', 'e', ​​'i', 'o', 'u']

  • l :=0, r :=0, 가장 긴 :=0

  • 동안 l

    • 유효한 :=참

    • 모음의 각 모음에 대해 수행

      • valid :=valid는 true이고 (r

      • r

        • r :=r + 1

    • valid가 true이면

      • 가장 긴 :=가장 긴 것의 최대값 및 (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