From 97bc690403dfe5134073e302f5de5483cf6906c3 Mon Sep 17 00:00:00 2001 From: Matej Focko Date: Sat, 3 Aug 2024 21:25:40 +0200 Subject: [PATCH] =?UTF-8?q?cs:=20add=20=C2=AB345.=20Reverse=20Vowels=20of?= =?UTF-8?q?=20a=20String=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Matej Focko --- cs/reverse-vowels-of-a-string.cs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 cs/reverse-vowels-of-a-string.cs diff --git a/cs/reverse-vowels-of-a-string.cs b/cs/reverse-vowels-of-a-string.cs new file mode 100644 index 0000000..df85c63 --- /dev/null +++ b/cs/reverse-vowels-of-a-string.cs @@ -0,0 +1,26 @@ +public class Solution { + private bool IsVowel(char c) { + return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'; + } + + public string ReverseVowels(string s) { + var reversed = new StringBuilder(s); + + s = s.ToLower(); + for (int l = 0, r = reversed.Length - 1; l < r; ++l, --r) { + while (l < reversed.Length && !IsVowel(s[l])) { + ++l; + } + + while (r > 0 && !IsVowel(s[r])) { + --r; + } + + if (l < r) { + (reversed[l], reversed[r]) = (reversed[r], reversed[l]); + } + } + + return reversed.ToString(); + } +}