345. 反转字符串中的元音字母 简单

编写一个函数,以字符串作为输入,反转该字符串中的元音字母。

示例 1:

输入:"hello"
输出:"holle"

示例 2:

输入:"leetcode"
输出:"leotcede"

提示:

  • 元音字母不包含字母 “y” 。

代码参考:

package main

import "fmt"

func main() {
    fmt.Println(reverseVowels("ai"))
}

// 和对称相关的,考虑 2 种对称遍历方式
// ... --l, mid, r++ ...    // 考虑各种边界问题
//     l++, ..., --r        // l <= r 相遇即边界
func reverseVowels(s string) string {
    if s == "" {
        return s
    }
    runes := []rune(s)
    n := len(runes)
    l, r := 0, n-1

    for l <= r {
        for l < r && !isVowel(runes[l]) {
            l++
        }
        for r > l && !isVowel(runes[r]) {
            r--
        }
        if isVowel(runes[l]) && isVowel(runes[r]) {
            runes[l], runes[r] = runes[r], runes[l]
        }
        l++
        r--
    }
    return string(runes)
}

func isVowel(r rune) bool {
    switch r {
    case 'a', 'A', 'e', 'E', 'i', 'I', 'o', 'O', 'u', 'U':
        return true
    default:
        return false
    }
}
最后编辑: kuteng  文档更新时间: 2021-06-05 10:16   作者:kuteng