18066 元音字母

18066 元音字母
时间限制:1000MS 代码长度限制:10KB
提交次数:0 通过次数:0

题型: 填空题 语言: G++;GCC;VC
Description
编写一个函数,挑选一个字符串中的所有元音字母构成并返回一个新的字符串

#include “stdio.h”

void yuan(char *s,char *s2)
{


}

main()
{
char str[81], str2[81];
gets(str);
yuan(str,str2);
printf("%s", str2);
}

输入格式
由键盘输入一行字符,以’\n’结束

输出格式
输出新构成的字符串

输入样例
I am good

输出样例
Iaoo

提示
元音字母有a、e、i、o、u,这5个元音字母,大写或小写

我的做法:

int i,j;
    for(i=0,j=0;s[i]!='\0';i++)
    {
        if(s[i]=='a'||s[i]=='e'||s[i]=='i'||s[i]=='o'||s[i]=='u'||s[i]=='A'||s[i]=='E'||s[i]=='I'||s[i]=='O'||s[i]=='U')
        {
            s2[j]=s[i];
            j++;
        }
    }
    s2[j]='\0';

标程:

while(*s!='\0')
    {
        if(*s=='a' ||*s=='o' ||*s=='e' ||*s=='i' ||*s=='u' ||
           *s=='A' ||*s=='O' ||*s=='E' ||*s=='I' ||*s=='U')
           {
              *s2=*s; s2++;
           }
        s++;
    }
    *s2='\0';
可以使用 Python 实现对给定字符串中的元音字母(大小写的 ‘aeiou’)逆序,同时保持其他符号不变。以下为两种不同的实现方法: ### 方法一:双指针法 ```python def reverseVowels(s): def isVowel(ch): return ch in "aeiouAEIOU" n = len(s) s = list(s) i, j = 0, n - 1 while i < j: while i < n and not isVowel(s[i]): i += 1 while j > 0 and not isVowel(s[j]): j -= 1 if i < j: s[i], s[j] = s[j], s[i] i += 1 j -= 1 return "".join(s) # 测试示例 test_string = "hello world" print(reverseVowels(test_string)) ``` 此方法定义了一个 `isVowel` 函数用于判断字符是否为元音字母,接着使用双指针 `i` 和 `j` 分别从字符串的首尾开始遍历,当两个指针都指向元音字母时,交换它们的位置,直至两个指针相遇。最后将列表转换为字符串并返回 [^2]。 ### 方法二:提取元音字母逆序再替换 ```python def reverse_vowels(s): vowels = 'aeiouAEIOU' vowel_chars = [char for char in s if char in vowels] vowel_chars.reverse() result = [] vowel_index = 0 for char in s: if char in vowels: result.append(vowel_chars[vowel_index]) vowel_index += 1 else: result.append(char) return ''.join(result) # 测试示例 test_string = "hello world" print(reverse_vowels(test_string)) ``` 该方法先提取字符串中的所有元音字母并将其逆序存储在 `vowel_chars` 列表中,之后遍历原字符串,若当前字符为元音字母,则从逆序后的元音字母列表中取出对应元素添加到结果列表,若不是元音字母,则直接添加到结果列表,最后将结果列表转换为字符串并返回 [^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值