본문 바로가기

Algorithm/String

(C++) - LeetCode (easy) 345. Reverse Vowels of a String

반응형

https://leetcode.com/problems/reverse-vowels-of-a-string/description/

 

Reverse Vowels of a String - LeetCode

Can you solve this real interview question? 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 lower and upper cases, more than onc

leetcode.com

문자열 구현 문제였습니다.

📕 풀이방법

📔 풀이과정

1. two pointer로 해결 가능합니다. left, right를 선언해 문자열의 양쪽에서 시작해줍니다.

2. 양쪽 모두 모음이라면 left를 오른쪽으로 right를 왼쪽으로 옮겨줍니다.

어느 한쪽이 모음이면 left나 right에 해당하는 pivot을 옮겨 줍니다.


📕 Code

📔 C++

class Solution {
public:

    bool isVowel(char c){
        char toLower = tolower(c);
        return toLower == 'a' || toLower == 'e' || toLower == 'i' || toLower == 'o' || toLower == 'u';
    }

    string reverseVowels(string s) {
        int left = 0;
        int right = s.size() - 1;
        while (left < right) {
            if(isVowel(s[left]) && isVowel(s[right])) {
                swap(s[left], s[right]);
                left++, right--;
                continue;
            }
            if(!isVowel(s[left])) left++;
            if(!isVowel(s[right])) right--;
        }
        return s;
    }
};

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.