345. Reverse Vowels of a String(反转字符串中的元音字母)

该篇文章介绍了一种编程方法,通过双指针技巧,找到给定字符串中的元音字母,然后交换它们的位置,从而实现元音字符的反转。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

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

元音字母包括 ‘a’、‘e’、‘i’、‘o’、‘u’,且可能以大小写两种形式出现不止一次。

问题分析

不要被题目迷惑了,题意是将元音字符提取出来,然后按照原因字符组成的新串将原串中的元音字符对换位置,我们可以采用双指针的方法一个指针从左向右、一个指针从右向左,遇见两个都是元音,且左指针在右指针的左边就进行对换。终止条件为左指针与右指针相遇。

代码

char* reverseVowels(char* s) {
    int length = 0;
    while(s[length++]!='\0');
    length--;
    int left = 0;
    int right = length-1;
    while(left<right){
        while(left<length){
            if(s[left]!='a'&&s[left]!='e'&&s[left]!='i'&&s[left]!='o'&&s[left]!='u'&&s[left]!='A'&&s[left]!='E'&&s[left]!='I'&&s[left]!='O'&&s[left]!='U'){
                left++;
            }else{
                break;
            }
        }
        while(right>=0){
            if(s[right]!='a'&&s[right]!='e'&&s[right]!='i'&&s[right]!='o'&&s[right]!='u'&&s[right]!='A'&&s[right]!='E'&&s[right]!='I'&&s[right]!='O'&&s[right]!='U'){
                right--;;
            }else{
                break;
            }
        }
        if(right>left){
	        char t = s[left];
	        s[left] = s[right];
	        s[right] = t;
            left++;
	        right--;
    	}
    }
    return s;
}

提交结果截图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值