영어 모음만 있는 문자열 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