개발 일지
345. Reverse Vowels of a String (문자열의 모음 뒤집기) C# 본문
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 순서대로 모음위치에 집어 넣어주었습니다.
'코딩 테스트 > LeetCode' 카테고리의 다른 글
26. Remove Duplicates from Sorted Array (정렬된 배열에서 중복 제거) C# (0) | 2022.11.16 |
---|---|
1544. Make The String Great (문자열 다듬기) C# (0) | 2022.11.14 |
766. Toeplitz Matrix (퇴플리츠 행렬) C# (0) | 2022.11.03 |
1108. Defanging an IP Address (IP 주소 훼손하기) C# (0) | 2022.11.01 |
219. Contains Duplicate II (중복 포함 II) C# (0) | 2022.10.31 |