- Date : 2021.09.12(일)
- Time : 30분
- Given a string s, reverse only all the vowels in the string and return it. The vowels are
'a', 'e', 'i', 'o', and 'u', and they can appear in both cases.
- 1 <= s.length <= 3 * 10^5
- s consist of printable ASCII characters.
- Input: s = "leetcode"
- Output: "leotcede"
def reverseVowels(self, s: str) -> str:
vowels = ["a","e","o","u","i","A","E","O","U","I"]
vowelsList = list(filter(lambda x: x in vowels, s))
answer = list(map(lambda x: vowelsList.pop() if x in vowels else x, s))
return "".join(answer)
: 이번 문제는 for 문을 줄이고 filter와 map을 이용해 풀어보았다. 뿌듯..하달까.. 물론 filter와 map을 쓴다고 좋은 답은 아니지만 ^-^.. 먼저 모음은 영어 대문자 소문자 상관없기 때문에 모두 vowels 리스트에 넣어주었다. 그리고 처음 시작은 문자열에서 모음을 찾아내서 다른 배열에 순서대로 넣어주는 것이였다. 그래서 filter 함수를 사용해서 vowels 리스트에 존재한다면 필터링 해주는 방식을 사용해주었다. 그렇게 해서 volwelsList에는 문자열에 존재하는 모음이 순서대로 저장되었다. 그리고 다시 문자열에서 이번엔 map을 사용해서 다시 vowles 배열에 존재한다면(= 모음이라면) 이제 모음의 순서를 바꿔주는 과정을 거쳐야한다. 아까 volwelsList에 모음을 순서대로 저장했기 때문에 pop을 해주면 순서 거꾸로 나오게 된다. 그것으로 대체를 하면된다.! 그렇게 해서 정답을 구했다