15.LeetCode刷题For Swift·345.反转字符串

2021-01-01  本文已影响0人  富城

1、原题

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

示例 1:

输入:"hello"
输出:"holle"
示例 2:

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

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

2、思路

3、代码

// Swift
class Solution {
    func reverseVowels(_ s: String) -> String {
        // 字符串转数组
        var strArr = Array(s)
        // 元音
        let vowels: Set<Character> = ["a", "A", "e", "E", "i", "I", "o", "O", "u", "U"]
        // 定义双指针
        var i = 0
        var j = strArr.count - 1
        while i < j {
            if !vowels.contains(strArr[i]) {
                i += 1
                continue
            }
            if !vowels.contains(strArr[j]) {
                j -= 1
                continue
            }
            // 交换数组的两个值
            strArr.swapAt(i, j)
            i += 1
            j -= 1
        }
        return String(strArr)
    }
}
// C++
class Solution {
public:
    string reverseVowels(string s) {
        //使用双指针
        int i = 0;
        int j = s.length() - 1;
        while (i < j)
        {
            if (!isOrNot(s[i])) {
                i ++;
                continue;
            }
            if (!isOrNot(s[j])) {
                j --;
                continue;
            }
            swap(s[i++], s[j--]);
        }
        return s;        
    }
    bool isOrNot(char c) {
        return (c == 'a' || c == 'A' ||
                c == 'e' || c == 'E' ||
                c == 'i' || c == 'I' ||
                c == 'o' || c == 'O' ||
                c == 'u' || c == 'U');
    }
};
上一篇下一篇

猜你喜欢

热点阅读