31 lines
450 B
Go
31 lines
450 B
Go
package q345
|
|
|
|
func isVowel(b byte) bool {
|
|
switch b {
|
|
case 'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U':
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
func reverseVowels(s string) string {
|
|
edit := []byte(s)
|
|
|
|
l, r := 0, len(edit)-1
|
|
for l < r {
|
|
for l < r && !isVowel(edit[l]) {
|
|
l++
|
|
}
|
|
for l < r && !isVowel(edit[r]) {
|
|
r--
|
|
}
|
|
if l < r {
|
|
edit[l], edit[r] = edit[r], edit[l]
|
|
l++
|
|
r--
|
|
}
|
|
}
|
|
return string(edit)
|
|
}
|
|
|
|
var _ = reverseVowels
|