Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발 일지

345. Reverse Vowels of a String (문자열의 모음 뒤집기) C# 본문

코딩 테스트/LeetCode

345. Reverse Vowels of a String (문자열의 모음 뒤집기) C#

포카리tea 2022. 11. 7. 18:40

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 once.

문자열 s가 주어질 때, 문자열의 모든 모음만 뒤집은 문자열을 반환하세요.

모음은 'a', 'e', 'i', 'o', 'u'이며, 대문자와 소문자 모두 한 번 이상 나타날 수 있습니다.

 

예시 1:

입력: s = "hello"
출력: "holle"

예시 2:

입력: s = "leetcode"
출력: "leotcede"

조건: 

  • 1 <= s.length <= 3 * 105
  • s는 출력 가능한 ASCII 문자로 구성됩니다.

정답:

using System.Text.RegularExpressions;

public class Solution {
    public string ReverseVowels(string s) {
         string vowels = "aeiouAEIOU";

        List<char> word = new List<char>();
        List<char> reverse = new List<char>();
        List<int> reverseIndex = new List<int>();

        for(int i = 0; i < s.Length; i++)
        {
            for(int j = 0; j < vowels.Length; j++)
            {
                if (s[i] == vowels[j])
                {
                    reverse.Add(s[i]);
                    reverseIndex.Add(i);
                }
            }
        }


        if (reverse.Count != 0)
        {
            reverse = Enumerable.Reverse(reverse).ToList();

            for(int i = 0; i < s.Length; i++)
            {
                if(reverseIndex.Count != 0)
                {
                    if(reverseIndex[0] == i)
                    {
                        word.Add(reverse[0]);
                        reverse.RemoveAt(0);
                        reverseIndex.RemoveAt(0);
                    }
                    else
                    {
                        word.Add(s[i]);
                    }
                }
                else
                {
                    word.Add(s[i]);
                }
            }

            return string.Concat(word);
        }

        return s;
    }
}

해설: reverse 리스트에 모음들을 저장해두고 해당 위치를 reverseIndex로 저장해둔 후 reverse를 뒤집고 reverseIndex 순서대로 모음위치에 집어 넣어주었습니다.