From 58e77d94403ae3fc494d75f354da354fc7ce9255 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=E1=BB=93=20V=C4=83n=20H=C3=B2a?= <56647826+hovanhoa@users.noreply.github.com> Date: Fri, 27 Sep 2024 09:42:30 +0700 Subject: [PATCH] Time: 3 ms (82.13%), Space: 4.2 MB (95.23%) - LeetHub --- .../0345-reverse-vowels-of-a-string.go | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/0345-reverse-vowels-of-a-string/0345-reverse-vowels-of-a-string.go b/0345-reverse-vowels-of-a-string/0345-reverse-vowels-of-a-string.go index 48f7469..ee6034c 100644 --- a/0345-reverse-vowels-of-a-string/0345-reverse-vowels-of-a-string.go +++ b/0345-reverse-vowels-of-a-string/0345-reverse-vowels-of-a-string.go @@ -1,5 +1,5 @@ func reverseVowels(s string) string { - vowelsMap := map[byte]bool{ + vowels := map[byte]bool{ 'a': true, 'e': true, 'i': true, @@ -12,21 +12,24 @@ func reverseVowels(s string) string { 'U': true, } - result := []byte(s) - left, right := 0, len(s) - 1 - for left < right { - for left < right && !vowelsMap[result[left]]{ - left += 1 + ans := []byte(s) + l, r := 0, len(ans) - 1 + for l < r { + for !vowels[ans[l]] && l < r { + l++ } - for left < right && !vowelsMap[result[right]] { - right -= 1 + for !vowels[ans[r]] && l < r { + r-- } - result[left], result[right] = result[right], result[left] - left += 1 - right -= 1 - } + if l < r { + ans[l], ans[r] = ans[r], ans[l] + } + + l++ + r-- + } - return string(result) + return string(ans) } \ No newline at end of file