yankewei / LeetCode

LeetCode 问题的解决方法
MIT License
6 stars 0 forks source link

345. 反转字符串中的元音字母 #60

Open yankewei opened 4 years ago

yankewei commented 4 years ago

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

示例 1:

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

示例 2:

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

提示:

元音字母不包含字母 "y" 。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-vowels-of-a-string

yankewei commented 4 years ago

双指针

挺容易想到的

func reverseVowels(s string) string {
    m := map[string]bool{
        "a": true,
        "e": true,
        "i": true,
        "o": true,
        "u": true,
        "A": true,
        "E": true,
        "I": true,
        "O": true,
        "U": true,
    }
    sSlice := strings.Split(s, "")
    l, r := 0, len(s)-1
    for l < r {
        _, e := m[sSlice[l]];
        if !e {
            l++
            continue
        }
        _, e = m[sSlice[r]];
        if !e {
            r--
            continue
        }
        sSlice[l], sSlice[r] = sSlice[r], sSlice[l]
        l++
        r--
    }
    return strings.Join(sSlice, "")
}