leetcode--345--反转字符串中的元音字母

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

示例 1:

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

输入: "leetcode"
输出: "leotcede"
说明:
元音字母不包含字母"y"。

链接:https://leetcode-cn.com/problems/reverse-vowels-of-a-string

思路:
1、定义一个列表ls存储所有的元音字母。
2、用两个指针分别指向左右端点,如果他们指向的元素是在列表ls中,则将其进行交换,直至左右端点越界

Python代码:

class Solution(object):
    def reverseVowels(self, s):
        """
        :type s: str
        :rtype: str
        """
        vowels = ['a','e','i','o','u','A','E','I','O','U']
        ls = list(s)

        left = 0
        right = len(ls)-1

        while left<right:
            while left<right and s[left] not in vowels:
                left += 1
            while left<right and s[right] not in vowels:
                right -= 1
            ls[left],ls[right] = ls[right],ls[left]
            left += 1
            right -= 1
        return ''.join(ls)

C++代码:

class Solution {
public:
    string reverseVowels(string s) {
        int size=s.size();
        if (size==0) return s;

        vector<char> vowels{'a','e','i','o','u','A','E','I','O','U'};
        int left=0;
        int right=size-1;

        while (left<right){
            while(left<right && find(vowels.begin(), vowels.end(), s[left])==vowels.end()){
                left += 1;
            }
            while(left<right && find(vowels.begin(), vowels.end(), s[right])==vowels.end()){
                right -= 1;
            }
            int temp = s[left];
            s[left] = s[right];
            s[right] = temp;
            left += 1;
            right -= 1;
        }
        return s;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容