반응형
1. 문제
https://leetcode.com/problems/reverse-vowels-of-a-string/
2. 코드
이 문제는 투 포인터를 사용해야하는 문제다.
처음엔 for문을 사용하여 길이를 반 잘라 앞의 부분을 저장해주는 식으로 접근했는데, 생각해보니 vowels에 포함되는 요소가 뒤 쪽에 포진되어 있거나 앞 쪽에 포진되어 있을 수 있다! => 잘못된 방법이다.
/**
* @param {string} s
* @return {string}
*/
var reverseVowels = function(s) {
let arrS = s.split('');
let vowels = ['a','e','i','o','u','A','E','I','O','U'];
let low = 0;
let hi = s.length -1;
while (low < hi) {
if (!vowels.includes(arrS[low]) && !vowels.includes(arrS[hi])) {
low++;
hi--;
}else if (vowels.includes(arrS[low]) && !vowels.includes(arrS[hi])) {
hi--;
} else if (!vowels.includes(arrS[low]) && vowels.includes(arrS[hi])) {
low++;
} else if (vowels.includes(arrS[low]) && vowels.includes(arrS[hi])) {
let temp = arrS[low];
arrS[low] = arrS[hi];
arrS[hi] = temp;
low++;
hi--;
}
}
return arrS.join('');
};
투포인터 문제들은 항상 투포인터로 풀어야 한다는 생각이 안든다. 투포인터에 익숙해지고 싶다.
반응형
'리트코드 > easy' 카테고리의 다른 글
[리트코드] 169. Majority Element - js (해시) (0) | 2023.08.13 |
---|---|
[리트코드] 1. Two Sum - js (0) | 2023.08.10 |
[리트코드] 136. Single Number - js (0) | 2023.07.19 |
[리트코드] 118. Pascal's Triangle - js (0) | 2023.07.18 |
[리트코드] 206. Reverse Linked List - js (0) | 2023.07.12 |