gpt4 book ai didi

c++ - 返回字符串中的最后一个元音

转载 作者:行者123 更新时间:2023-12-05 08:30:02 26 4
gpt4 key购买 nike

我需要返回给定字符串中的最后一个元音(大写或小写)并返回 '!'如果字符串中没有任何元音。

我写的代码有效,但前提是字符串以元音结尾。如果它不以元音结尾,它总是返回一个 '!'。

我该如何解决这个问题?

char lastVowel(string s){

char vowel = ' ';

for(int i = 0; i < s.size(); ++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'){
vowel = s[i];
}else{
vowel = '!';
}
}
return vowel;
}

最佳答案

这非常简单,只需两行即可完成:

#include <string>

char lastVowel(std::string s) {
const auto pos = s.find_last_of("aeiouAEIOU");
return pos == std::string::npos ? '!' : s[pos];
}

您还可以std::transform 将字符串转换为小写并将搜索缩短为aeiou,但我尚未测试这是否会影响性能。

编辑:

我刚测试过。对于大 N(100,000 个字符串),使用 std::transform 大约慢 158 倍。

不要先将您的字符串转换为一种或另一种大小写。将搜索条件加长会快得多。

关于c++ - 返回字符串中的最后一个元音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66876806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com