LeetCode 345. Reverse Vowels of a String

15 篇文章 0 订阅
12 篇文章 0 订阅

Reverse Vowels of a String

Des

Write a function that takes a string as input and reverse only the vowels of a string.
Example 1:
Given s = “hello”, return “holle”.
Example 2:
Given s = “leetcode”, return “leotcede”.

分析

这个题拿到后觉得很简单,但是自己写的复杂度高,我专门把元音字母给取出来了,这样能通过但是复杂度高,后来想出了如下的办法:从两边设计两个指针,往中间走,如果是元音就停下做交换,不是就往中间一直走,当两个都不走的时候也就是停下来需要做交换了。

Code

class Solution {
public:
    string reverseVowels(string s) {
        for(int i=0,j=s.length()-1;i<j;){
            if(tolower(s[i])!='a'&&tolower(s[i])!='e'&&tolower(s[i])!='i'&&tolower(s[i])!='o'&&tolower(s[i])!='u'){
                i++;
            }
            else if(tolower(s[j])!='a'&&tolower(s[j])!='e'&&tolower(s[j])!='i'&&tolower(s[j])!='o'&&tolower(s[j])!='u'){
                j--;
            }
            else{
                char ch=s[i];
                s[i]=s[j];
                s[j]=ch;
                i++;j--;
            }
        }
        return s;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值