var vowels map[rune]bool = map[rune]bool{'A': true, 'E': true, 'I': true, 'O': true, 'U': true, 'a': true, 'e': true, 'i': true, 'o': true, 'u': true} func reverseVowels(s string) string { runes := []rune(s) for l, r := 0, len(s)-1; l < r; l, r = l+1, r-1 { if vowels[runes[l]] && vowels[runes[r]] { runes[l], runes[r] = runes[r], runes[l] } else if vowels[runes[l]] { l-- } else if vowels[runes[r]] { r++ } } return string(runes) }