search
HomeBackend DevelopmentC++Replace all consonants in string with nearest vowel using C++ program

Replace all consonants in string with nearest vowel using C++ program

This method aims to replace a string of consonants with the closest vowels in the alphabet (also known as lowercase Latin letters). If two vowels are equally close, we can replace them with the first vowel in those letters.

Let’s look at some input scenarios -

Suppose we have a string, such as "ebgkjasjd", and now we need to replace all occurrences of consonants in the string with the nearest vowels.

Input = "ebgkjasjd";
Result =
ebgkjasjd
eaeiiauie

Replace element 'b' with 'a' since it is the nearest vowel. We could have replaced element 'g' with 'e' or 'i' since they are both equally recent, but we choose to replace it with 'e' since it came first. The same goes for all other elements in the string.

Assume that if the input string does not contain any vowels, for example, consider a string: "sdfhgtykl", the resulting output is -

Input = "sdfhgtykl";
Result =
sdfhgtykl
ueeieuuii

For the first element 's', the vowel 'u' is the closest, so replace 's' with 'u'. Like all other elements in the array, they are consonants. This situation also yields the worst-case complexity of the method.

algorithm

  • Traverse the input string starting from the starting index.

  • If a consonant is encountered, the number of letters from the consonant to the two nearest vowels on the left and right will be counted. Choose vowels with fewer letters.

  • This process will be repeated until all consonants in the string have been traversed.

  • The output obtained is the replaced string.

Example

The following is code implemented in C to replace all consonants in a string with the nearest vowels in the alphabet -

#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;
}

Output

“ibgshzjbsh”
“iaeuiuiaui”

Example

However, a better approach is to use an array and store the closest character answer for each character instead of using lots of if-else conditions.

#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;
}

Output

iaeuiuiaui

in conclusion

We can replace an element by finding it and replacing it with the closest character. The time complexity of traversing a string is O(n). The second method is easier to understand and code, and less cumbersome. The time complexity is also O(n) since we only iterate through the string once.

The above is the detailed content of Replace all consonants in string with nearest vowel using C++ program. For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:tutorialspoint. If there is any infringement, please contact admin@php.cn delete
php怎么将16进制字符串转为数字php怎么将16进制字符串转为数字Oct 26, 2021 pm 06:36 PM

php将16进制字符串转为数字的方法:1、使用hexdec()函数,语法“hexdec(十六进制字符串)”;2、使用base_convert()函数,语法“bindec(十六进制字符串, 16, 10)”。

php怎么将字符串转换成小数php怎么将字符串转换成小数Mar 22, 2023 pm 03:22 PM

PHP 是一门功能强大的编程语言,广泛应用于 Web 开发领域。其中一个非常常见的情况是需要将字符串转换为小数。这在进行数据处理的时候非常有用。在本文中,我们将介绍如何在 PHP 中将字符串转换为小数。

golang怎么检测变量是否为字符串golang怎么检测变量是否为字符串Jan 06, 2023 pm 12:41 PM

检测变量是否为字符串的方法:1、利用​“%T”格式化标识,语法“fmt.Printf("variable count=%v is of type %T \n", count, count)”;2、利用reflect.TypeOf(),语法“reflect.TypeOf(变量)”;3、利用reflect.ValueOf().Kind()检测;4、使用类型断言,可以对类型进行分组。

go语言怎么删除字符串中的空格go语言怎么删除字符串中的空格Jan 17, 2023 pm 02:31 PM

删除方法:1、使用TrimSpace()函数去除字符串左右两边的空格,语法“strings.TrimSpace(str)”;2、使用Trim()函数去除字符串左右两边的空格,语法“strings.Trim(str, " ")”;3、使用Replace()函数去除字符串的全部空格,语法“strings.Replace(str, " ", "", -1)”。

php 字符串长度不一致怎么办php 字符串长度不一致怎么办Feb 07, 2023 am 09:58 AM

php字符串长度不一致的解决办法:1、通过mb_detect_encoding()函数查看字符串的编码方式;2、通过mb_strlen函数查看具体字符长度;3、使用正则表达式“preg_match_all('/[\x{4e00}-\x{9fff}]+/u', $str1, $matches);”剔除非中文字符即可。

php怎么将字符串转为布尔类型php怎么将字符串转为布尔类型Jul 01, 2021 pm 06:36 PM

转换方法:1、在转换变量前加上用括号括起来的目标类型“(bool)”或“(boolean)”;2、用boolval()函数,语法“boolval(字符串)”;3、用settype()函数,语法“settype(变量,"boolean")”。

php字符串函数学习:怎么去掉前面的字符php字符串函数学习:怎么去掉前面的字符Mar 20, 2023 pm 02:33 PM

在开发PHP应用程序时,有时我们需要去掉字符串前面的某些特定字符或者字符串。在这种情况下,我们需要使用一些PHP函数来实现这一目标。本文将介绍一些PHP函数,帮助您轻松地去掉字符串前面的字符或字符串。

php字符串部分乱码怎么办php字符串部分乱码怎么办Jan 20, 2023 am 10:18 AM

php字符串部分乱码的解决办法:1、使用“mb_substr(strip_tags($str),0,-1,'UTF-8');”截取字符串;2、使用“iconv("UTF-8","GB2312//IGNORE",$data)”转换字符集即可。

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

Hot Tools

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!