Сложность: easy
Дана строка s, переверните только все гласные в строке и верните её.
Гласные: 'a', 'e', 'i', 'o', 'u', а также их верхние регистры.
Пример:
Input: s = "hello"
Output: "holle"
👨💻 Алгоритм:
1⃣Инициализация указателей и гласных:
Создайте набор гласных для быстрой проверки.
Установите два указателя: один на начало строки (left), другой на конец строки (right).
2⃣Перестановка гласных:
Пока левый указатель меньше правого, перемещайте указатели к центру, пока не найдёте гласные.
Обменивайте найденные гласные и продолжайте сдвигать указатели.
3⃣Завершение работы:
Когда указатели пересекутся, остановите процесс и верните строку.
😎 Решение:
public class Solution {
public string ReverseVowels(string s) {
HashSet<char> vowels = new HashSet<char>{'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'};
char[] chars = s.ToCharArray();
int left = 0, right = s.Length - 1;
while (left < right) {
if (!vowels.Contains(chars[left])) {
left++;
} else if (!vowels.Contains(chars[right])) {
right--;
} else {
char temp = chars[left];
chars[left] = chars[right];
chars[right] = temp;
left++;
right--;
}
}
return new string(chars);
}
}Ставь 👍 и забирай 📚 Базу знаний