Leetcode/LeetCode75

[Array/String][Easy] 345. Reverse Vowels of a String

자전거통학 2023. 11. 26. 00:39

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

 

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

 

Q. input string s를 입력으로 받을때, 모음문자만 뒤집어서 출력하라. 이때 문자는 대,소문자 모두 등장 할 수 있다.

Key : O(N)의 TC를 가지도록 논리 전개. 

 

string reverseVowels(string s)
{
    // s에서 모음 문자만 reverse해서 반환하라.
    // 
    string vowls = "";
    for (int k = 0; k < s.length(); ++k)
    {
        char cur = s[k];
        cur = tolower(cur);
        if (cur == 'a' || cur == 'e' || cur == 'i' || cur == 'o' || cur == 'u')
            vowls += s[k];
    }
    string ret = "";
    int q = 0;
    for (int k = 0; k < s.length(); ++k)
    {
        char cur = s[k];
        cur = tolower(cur);
        if (cur == 'a' || cur == 'e' || cur == 'i' || cur == 'o' || cur == 'u')
        {
            ret += vowls[vowls.length() - 1 - q];
            ++q;
        }
        else ret += s[k];
    }
    return ret;
}

 

Comment : 문제 자체는 평이. 조금더 최적화 여지가 있나 해서 solution들을 봤는데, 대체로 two pointer 해결들이 많았다. 추가 vowl buffer를 필요치 않고, 1 pass로 코드로직이 마감되므로, 그 방법이 더 나은 해라 할수 있겠다....