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

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

该方法旨在用字母表中最接近的元音(也称为小写拉丁字母)替换一串辅音。如果两个元音同样接近,我们可以用这些字母中的第一个元音来替换它们。

让我们来看一些输入场景 –

假设我们有一个字符串,比如“ebgkjasjd”,现在我们需要将字符串中所有出现的辅音字母替换为最近的元音字母。

Input = "ebgkjasjd";Result =ebgkjasjdeaeiiauie

将元素’b’替换为’a’,因为它是最近的元音字母。我们可以用’e’或’i’替换元素’g’,因为它们都是同样最近的,但我们选择用’e’替换它,因为它先出现。对于字符串中的所有其他元素也是类似的。

立即学习“C++免费学习笔记(深入)”;

假设如果输入字符串不存在任何元音,例如,考虑一个字符串:“sdfhgtykl”,则得到的结果输出为 –

Input = "sdfhgtykl";Result =sdfhgtyklueeieuuii

对于第一个元素’s’,元音’u’是最接近的,因此将’s’替换为’u’。与数组中的所有其他元素一样,它们都是辅音。这种情况也产生了该方法的最坏情况复杂度。

算法

从起始索引开始遍历输入字符串。

如果遇到一个辅音,将计算从该辅音到左右最近的两个元音之间的字母数量。选择具有较少字母的元音。

该过程将重复进行,直到遍历完字符串中的所有辅音字母。

获得的输出是替换后的字符串。

示例

以下是用C++实现的代码,将字符串中的所有辅音字母替换为字母表中最近的元音字母 –

#include using namespace std;void solve(string& s) {   for(char &ch : s) {      if(ch>'a' && ch<'e') {         if(ch-'a' 'e' && ch<'i') {         if(ch-'e' 'i' && ch<'o') {         if(ch-'i' 'o' && ch<'u') {         if(ch-'o' 'u') {         ch = 'u';      }   }}int main() {   string s = "ibgshzjbsh";   cout << s << "n";   solve(s);   cout << s;   return 0;}

输出

“ibgshzjbsh”“iaeuiuiaui”

示例

但是,更好的方法是使用数组并存储每个字符最接近的字符答案,而不是使用大量 if-else 条件。

#include #include 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++程序将字符串中的所有辅音替换为最近的元音的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1444914.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 22:00:34
下一篇 2025年12月17日 22:00:42

相关推荐

  • C++程序打印字典

    映射是 C++ 中的一种特殊类型的容器,其中每个元素都是一对两个值,即键值和映射值。键值用于索引每个项目,映射值是与键关联的值。无论映射值是否唯一,键始终是唯一的。要在 C++ 中打印映射元素,我们必须使用迭代器。一组项目中的一个元素由迭代器对象指示。迭代器主要与数组和其他类型的容器(例如向量)一起…

    2025年12月17日
    000
  • 将给定的字符串转换为T,通过任意次数替换字符串之间的字符

    转换字符串意味着我们必须根据给定条件将其与给定字符串相同。在这个问题中,我们给出了一个由字符串“arr”和大小为“M”的字符串“T”组成的数组。我们的任务是检查是否可以通过从数组的字符串( arr[i] )中删除任何字符并将该字符插入到另一个字符串的任何索引中来使数组中存在的所有字符串与给定的字符串…

    2025年12月17日
    000
  • 将字符串A所需附加的最小子序列以获得字符串B

    在这个问题中,我们需要使用str1的子序列来构造str2。为了解决这个问题,我们可以找到str1的子序列,使其能够覆盖最大长度为str2的子串。在这里,我们将学习两种不同的方法来解决问题。 问题陈述 – 我们给出了两个不同长度的字符串:str1 和 str2。我们需要按照以下条件从 str1 构造 …

    2025年12月17日
    000
  • C程序打印字符,不使用格式说明符

    在本文中,我们将了解如何在不使用任何格式的情况下打印一些字符说明符。 C 中的格式说明符有 %d、%f、%c 等。这些用于打印字符和C 中的数字使用 printf() 函数。 这里我们将看到另一种不使用 %c 格式说明符打印字符的方法。这个可以通过直接以十六进制形式放置ASCII值来完成。 示例代码…

    2025年12月17日
    000
  • C程序表示乘法表

    问题 编写一个程序,按照以下给定的格式打印从1 x 1到12 x 10的乘法表: 1 2 3 4 5 6 7 8 9 102 4 6 8 ……………….203 6 9………&…

    2025年12月17日
    000
  • 在C程序中,将数组范围查询与频率相同的元素进行翻译

    这里我们会看到一个有趣的问题。我们有一个包含 N 个元素的数组。我们必须执行一个查询 Q,如下所示: Q(start, end) 表示从开始到结束,数字“p”出现的次数恰好是“p”次。 p> 因此,如果数组类似于:{1, 5, 2, 3, 1, 3, 5, 7, 3, 9, 8},并且查询为 …

    2025年12月17日
    000
  • C++程序查找法向量和迹

    二维数组或矩阵在多个应用中非常有用。矩阵有行和列,并在其中存储数字。在C++中,我们也可以使用多维数组来定义二维矩阵。在本文中,我们将看到如何使用C++计算给定矩阵的范数和迹。 法线是矩阵中所有元素总和的平方根。迹是主对角线中存在的元素的总和。让我们看看算法和 C++ 代码表示。 矩阵法线 $beg…

    2025年12月17日
    000
  • C程序中的阶乘程序

    Given with the number n the task is to calculate the factorial of a number. Factorial of a number is calculated by multiplying the number with its sma…

    2025年12月17日
    000
  • 在C程序中,打印只包含数字0和1的数,使它们的和为N

    给定一个整数n,任务是打印仅由0和1组成的数字,并且它们的总和等于整数n。 仅包含0和1的数字是1、10 , 11 所以我们必须打印所有可以相加得到等于 n 的数字。 就像,我们输入 n = 31 那么答案可以是 10+10+11 或 10+10 +10+1 示例 Input: 31Output:1…

    2025年12月17日
    000
  • 写一个C程序,使用strncmp库函数来比较两个字符串

    strncmp是一个预定义的库函数,存在于string.h文件中,它用于比较两个字符串并显示哪个字符串更大。 strcmp函数(字符串比较) 此函数比较两个字符串。它返回两个字符串中第一个不匹配字符的ASCII差异。 语法 int strcmp (string1, string2); 如果差异等于零…

    2025年12月17日
    000
  • C程序用于判断给定的数字是否为强数

    一个强数是一个数字,其中各位数字的阶乘之和等于该数字本身。 示例 123!= 1!+2!+3!                    =1+2+6 =9 在这个例子中,123不是一个强数,因为各位数字的阶乘之和不等于该数字本身。 145!=1!+4!+5!             =1+24+120…

    2025年12月17日
    000
  • 将给定字符串中的每个辅音序列替换为其长度

    本文将帮助我们了解如何将给定字符串中的连续辅音序列替换为其长度。辅音是一系列不是元音的字母。在这里,我们首先需要确定字符串中的哪些字母是辅音。 例如,在单词“abcdiopqrsu”中,辅音序列“bcd”和“pqrs”。接下来,我们将用它们的长度替换每个辅音序列。所以单词“bcd”会被替换为“3”,…

    2025年12月17日
    000
  • C程序:将文本中的一个单词替换为另一个给定的单词

    在这个程序中,我们给定了三个字符串 txt、oldword 和 newword。我们的任务是创建一个 C 程序,将文本中的一个单词替换为另一个给定的单词。 该程序将搜索文本中所有出现的 oldword,并将其替换为 newword。 让我们举个例子来理解这个问题 – 输入 text = …

    2025年12月17日
    000
  • C程序以显示指向指针之间的关系

    在 C 编程语言中,指向指针的指针或双指针是一个保存另一个指针地址的变量。 声明 下面给出的是指向指针的指针的声明 – datatype ** pointer_name; 例如int **p; 这里,p是一个指向指针的指针。 初始化 ‘&’用于初始化。 例…

    2025年12月17日
    000
  • C++程序删除数组中的元素,不使用库函数

    数组的目的是通过基地址和索引,在多个内存位置上提供对相同类型数据的访问。在各种应用中,数组被用于存储各种原因的数据。数组必须像其他数据结构一样高效地处理添加、删除和更新元素。静态数组和动态数组都包含了许多在C++中处理各种与数组相关的操作的库函数。但在本文中,我们将看到如何在不使用任何库函数的情况下…

    2025年12月17日
    000
  • 十进制转二进制的C程序?

    将整数从十进制 (base-10) 转换为二进制 (base-2)。假设整数的大小为 32 位,需要将数字除以基数。计算机使用它来将整数值更改为计算机的字节。 Input:10Output:1010 说明 如果十进制数是10 10除以2余数为零。因此,0。 将 10 除以 2。新数字为 10/2 =…

    2025年12月17日
    000
  • C程序的朴素模式搜索算法

    C 中的模式匹配– 我们必须查找一个字符串是否存在于另一个字符串中,例如,字符串“algorithm”存在于字符串“naive algorithm”中。如果是找到,然后显示它的位置(即它所在的位置)。我们倾向于创建一个函数,它接收 2 个字符数组,如果匹配则返回位置,否则返回 -1。 I…

    2025年12月17日
    000
  • 检查字符串是否包含连续的字母,并且每个字母只出现一次

    Introduction 在C++中,字符串是一系列的字符,这些字符可以是不同的或重复的。连续的字符是同时出现的字符,它们之间的差值为1。例如,字符a和b是连续的,因为它们一起出现。然而,字符m和o在它们的位置上有一个差值为2,使它们不是连续的。 在本文中,我们将开发一段代码,该代码将以字符串作为输…

    2025年12月17日
    000
  • 检查给定字符串是否是关键字的C程序?

    关键字是在C++库中预定义或保留的单词,具有固定的含义,并用于执行内部操作。C++语言支持超过64个关键字。 每个关键字都以小写字母形式存在,如auto、break、case、const、continue、int等。 C++语言中的32个关键字也可在C语言中使用。 autodoubleintstru…

    2025年12月17日
    000
  • C++程序以给定值找到反正弦

    在三角学中,我们最常使用几个比率:正弦、余弦、正切和其他一些比率。从给定的角度,可以计算这些比率。但是,如果我们有比率值,我们还可以使用反三角函数计算角度。 在本文中,我们将讨论如何通过 C++ 中的反正弦(反正弦)方法从正弦值获取弧度角。 asin() 函数 asin() 方法用于使用反三角正弦函…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信