Problem From.
https://leetcode.com/problems/reverse-vowels-of-a-string/
오늘 문제는 aeiouAEIOU 안에 들어가는 단어가 있으면 그 단어끼리만 뽑아서 순서를 거꾸로 만든 다음에 반환하는 문제였다.
처음부터 끝까지 단어를 검사하면서 해당되는 단어가 나오면 따로 리스트에 추가해뒀다가,
리스트를 reverse 시킨 다음에 다시 한번 검사하면서 해당 단어가 나오면 다시 넣어주는 식으로 문제를 풀이하였다.
class Solution {
fun reverseVowels(s: String): String {
val vowels = "aeiouAEIOU"
val array = arrayListOf<Char>()
s.forEach {
if(vowels.contains(it)) array.add(it)
}
array.reverse()
var answer = StringBuilder()
var cnt = 0
s.forEach {
if(vowels.contains(it)) {
answer.append(array[cnt])
cnt += 1
}else {
answer.append(it)
}
}
return answer.toString()
}
}
위 알고리즘의 시간 복잡도는 O(kN) 이 된다.