250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(Leet Code c++)Reverse Vowels of a String 본문
728x90
반응형
345. Reverse Vowels of a String
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.
Example 1:
Input: s = "hello" Output: "holle"
Example 2:
Input: s = "leetcode" Output: "leotcede"
Constraints:
- 1 <= s.length <= 3 * 105
- s consist of printable ASCII characters.
주어진 문자열 s에서 'a', 'e', 'i', 'o', 'u'에 해당하는 문자를 서로 바꿔줘야 한다.
check() 함수는 현재 문자가 모음(대소문자 포함)인지 확인한다.
front와 back을 통해 맨 앞과 맨 뒤에서부터 탐색을 시작한다.
while문을 통해 탐색 시작.
front < back 이면서, check(answer[front])가 true일 때까지 front를 늘려준다.
back > front 이면서, check(answer[back])이 true일 대까지 back을 줄여준다.
두 while문이 끝나면 서로의 위치를 바꿔주고,
front++, back--를 해주어 계속 이어나가도록 한다.
class Solution {
public:
bool check(char c){
if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U'){
return true;
}
return false;
}
string reverseVowels(string s) {
string answer = s;
int front = 0, back = s.size() - 1;
while(front <= back){
while(front < back && !check(answer[front])){
front++;
}
while(back > front && !check(answer[back])){
back--;
}
swap(answer[front], answer[back]);
front++;
back--;
}
return answer;
}
};
728x90
반응형
'Leet Code 알고리즘' 카테고리의 다른 글
(Leet Code c++)Intersection of Two Arrays2 (0) | 2021.08.04 |
---|---|
(Leet Code c++)Intersection of Two Arrays (0) | 2021.08.03 |
(Leet Code c++)Power of Four (0) | 2021.08.03 |
(Leet Code c++)Counting Bits (0) | 2021.08.03 |
(Leet Code c++)Power of Three (0) | 2021.08.03 |