力扣每日一题-第48天-345. 反转字符串中的元音字母

2022.8.4今天你刷题了吗?


题目:

给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。

元音字母包括 'a''e''i''o''u',且可能以大小写两种形式出现。

分析:

这里主要是反转需要注意,反转是指:对于a和e,那么变为e和a,主要情况如下:

hello,那么就是holle

ceeop,那么就是ceoep。

qee,那么就是qee

也就是说反转的话只要是元音你就可以反,至于是不是一样的元音不影响结果。

思路:利用两个指针,一个从0开始,一个从末尾开始,从左至右和从右向左开始,依次找到元音字母,判断此时满足左<右,然后进行交换,然后再进行左->右遍历和右->左遍历。

解析:

1.双指针

class Solution {
public:
    string reverseVowels(string s) {
        int i = 0, j = s.size() - 1;
        string tool = "aoeiuAOEIU";
        while (i < j)
        {
            while (tool.find(s[i]) == -1 && i < j)//没找到
                ++i;
            while (tool.find(s[j]) == -1 && i < j)
                --j;
            if (i < j)
                swap(s[i++], s[j--]);
        }
        return s;
    }
};

你可能感兴趣的:(力扣,java,前端,服务器)