345.reverse-vowels-of-a-string.go 455 B

123456789101112131415
  1. 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}
  2. func reverseVowels(s string) string {
  3. runes := []rune(s)
  4. for l, r := 0, len(s)-1; l < r; l, r = l+1, r-1 {
  5. if vowels[runes[l]] && vowels[runes[r]] {
  6. runes[l], runes[r] = runes[r], runes[l]
  7. } else if vowels[runes[l]] {
  8. l--
  9. } else if vowels[runes[r]] {
  10. r++
  11. }
  12. }
  13. return string(runes)
  14. }