您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

使用C++程序将字符串中的所有辅音替换为最近的元音

2025/3/3 20:50:34发布11次查看
该方法旨在用字母表中最接近的元音(也称为小写拉丁字母)替换一串辅音。如果两个元音同样接近,我们可以用这些字母中的第一个元音来替换它们。
让我们来看一些输入场景 -
假设我们有一个字符串,比如“ebgkjasjd”,现在我们需要将字符串中所有出现的辅音字母替换为最近的元音字母。
input = ebgkjasjd;result =ebgkjasjdeaeiiauie
将元素'b'替换为'a',因为它是最近的元音字母。我们可以用'e'或'i'替换元素'g',因为它们都是同样最近的,但我们选择用'e'替换它,因为它先出现。对于字符串中的所有其他元素也是类似的。
假设如果输入字符串不存在任何元音,例如,考虑一个字符串:“sdfhgtykl”,则得到的结果输出为 -
input = sdfhgtykl;result =sdfhgtyklueeieuuii
对于第一个元素's',元音'u'是最接近的,因此将's'替换为'u'。与数组中的所有其他元素一样,它们都是辅音。这种情况也产生了该方法的最坏情况复杂度。
算法从起始索引开始遍历输入字符串。
如果遇到一个辅音,将计算从该辅音到左右最近的两个元音之间的字母数量。选择具有较少字母的元音。
该过程将重复进行,直到遍历完字符串中的所有辅音字母。
获得的输出是替换后的字符串。
示例以下是用c++实现的代码,将字符串中的所有辅音字母替换为字母表中最近的元音字母 -
#include <iostream>using namespace std;void solve(string& s) { for(char &ch : s) { if(ch>'a' && ch<'e') { if(ch-'a' <= 'e'-ch) ch='a'; else ch='e'; } else if(ch>'e' && ch<'i') { if(ch-'e' <= 'i'-ch) ch='e'; else ch='i'; } else if(ch>'i' && ch<'o') { if(ch-'i' <= 'o'-ch) ch='i'; else ch='o'; } else if(ch>'o' && ch<'u') { if(ch-'o' <= 'u'-ch) ch='o'; else ch='u'; } else if(ch>'u') { ch = 'u'; } }}int main() { string s = ibgshzjbsh; cout << s << \n; solve(s); cout << s; return 0;}
输出“ibgshzjbsh”“iaeuiuiaui”
示例但是,更好的方法是使用数组并存储每个字符最接近的字符答案,而不是使用大量 if-else 条件。
#include <iostream>#include <vector>using namespace std;string solve(string s) { string hash = aaaeeeeiiiiioooooouuuuuuuu; for (int i=0;i<s.size();i++) { s[i] = hash[s[i]-'a']; } return s;}int main() { string s = ibgshzjbsh; cout << solve(s); return 0;}
输出iaeuiuiaui
结论我们可以通过查找元素并将其替换为最接近的字符来替换元素。遍历一次字符串的时间复杂度为 o(n)。第二种方法更容易理解和编写代码,并且不那么麻烦。时间复杂度也是 o(n),因为我们只遍历字符串一次。
以上就是使用c++程序将字符串中的所有辅音替换为最近的元音的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product