移除元音后打印反转字符串


reverse() 是一个预安装的预定义头文件,在 C++ 环境中的过程中用作模板定义。该方法能够以从后到前的顺序反转任何值容器中的范围内的元素。此过程的时间复杂度为 O(n)。假设我们有一个声明为 str[] 的字符串或句子,其中包含一些数据元素,现在任务是在从该字符串中移除元音后执行反转过程以获得最终结果。

以下是一些过程方法的一般示例 -

Input taken for the process:duck
Output by the process:kud
Input taken for the process: hello
Output by the process is here: holle
Input taken for the process: hello world
Output by the process: hollo werld

从字符串中移除元音后反转字符串的算法

在此可能的算法中,我们将执行在 C++ 环境中不包含元音的句子的打印过程并将其反转。通过此算法,我们将构建一些 C++ 语法,以便以有效的方式了解问题陈述。

  • 步骤 1 - 开始该过程。

  • 步骤 2 - 声明输入输出流。

  • 步骤 3 - 导入内置类和声明的函数。

  • 步骤 4 - 声明字符串的值。

  • 步骤 5 - 构造元音的返回集。

  • 步骤 6 - 打印结果字符串。

  • 步骤 7 - 构造移除元音的表示法。

  • 步骤 8 - 打印第一个字符。

  • 步骤 9 - 标记一个循环以检查每个字符的值。

  • 步骤 10 - 比较连续字符的值。

  • 步骤 11 - 声明一个驱动程序字符串。

  • 步骤 12 - 移除元音并获取返回值。

  • 步骤 13 - 在不包含元音的字符串上运行反转方法。

  • 步骤 13 - 获取结果并终止该过程。

从字符串中移除元音后反转字符串的语法

vector<char> vowels = {'a', 'e', 'i', 'o', 'u','A', 'E', 'I', 'O', 'U';
for (int i = 0; i < str.length(); i++){
      if (find(vowels.begin(), vowels.end(),
      str[i]) != vowels.end()){
         str = str.replace(i, 1, "");
         i -= 1;
      }
   }
   return str;
}
int main(){
string str = "STRING STATYEMENT ONE" " STRING STATEMENT 2";
cout << remVowel(str) << endl;
string remVowel(string str){
   regex r("[aeiouAEIOU]");
   return regex_replace(str, r, "");
}
int main(){
string str = "STRING STATEMENT";
cout << (remVowel(str));

在此可能的语法中,我们将执行在 C++ 环境中打印特定内容中不存在元音的句子或字符串的过程,并反转整个结果字符串。通过此算法,我们将构建一些 C++ 程序,以全面了解问题陈述。

遵循的方法

  • 方法 1 - 使用迭代、遍历和 min_cost (String str) 方法反转移除元音后字符串的 C++ 程序

  • 方法 2 - 使用实用程序函数、两个单独的指针和 findwinner (String str) 方法反转移除元音后字符串的 C++ 程序

方法 1:使用迭代、遍历和 Min_cost (String str) 方法

迭代方法的使用

在此可能的方法中,我们将应用迭代方法来打印不包含元音的字符串或句子。移除元音后,我们将再次反转整个特定字符串以获得所需的结果。

char str[100];
int i, j, len = 0;
printf("ENTER THE VALUE OF THE STRING : ");
scanf("%s", str);
len = strlen(str);
for (i = 0; i < len; i++) {
   if (str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' ||
   str[i] == 'u' ||
   str[i] == 'A' || str[i] == 'E' || str[i] == 'I' || str[i] == 'O' ||
   str[i] == 'U') {
      for (j = i; j < len; j++) {
         str[j] = str[j + 1];
      }
      i--;
      len--;
   }
   str[len + 1] = '\0';
}
printf("AFTER REMOVING VOWEL STATEMENT HERE : %s", str);

示例

//C++ program to reverse a string after removing vowels by using iteration
#include <iostream>
#include <string>
using namespace std;
string reverseString(string s){
   string reversed;
   for (int i = s.length() - 1; i >= 0; i--){
      reversed += s[i];
   }
   return reversed;
}
string removeVowels(string s,string reversed){
   string withoutVowels;
   for (int i = 0; i < s.length(); i++){
      char c = s[i];
      if (c != 'a' && c != 'e' && c != 'i' && c != 'o' && c != 'u' && c
      != 'A' && c != 'E' && c != 'I' && c != 'O' && c != 'U'){
         withoutVowels += reversed[i];
      }
   }
   return withoutVowels;
}
int main() {
   string s = "ARBRDDKOLKATADHAKAINDIABANGLADESH";
   string reversed = reverseString(s);
   string withoutVowels = removeVowels(s,reversed);
   cout << withoutVowels << endl;
   return 0;
}

输出

SEDALGABINIKDAKOKDRRA

遍历方法的使用

在此可能的方法中,我们将应用遍历方法来打印不包含元音的字符串或句子。移除元音后,我们将再次反转整个特定字符串以获得所需的结果。

示例

//C++ program to reverse a string after removing vowels by using traversal method
#include <bits/stdc++.h>
using namespace std;
void replaceOriginal(string s, int n){
   string r(n, ' ');
   for (int i = 0; i < n; i++){
      r[i] = s[n - 1 - i];
      if (s[i] != 'a' && s[i] != 'e' && s[i] != 'i'
      && s[i] != 'o' && s[i] != 'u'){
         cout << r[i];
      }
   }
   cout << endl;
}
int main(){
   string s = "KOLKATADHAKAARBRDDINDBANGLADESH";
   int n = s.length();
   replaceOriginal(s, n);
   return 0;
}

输出

HSEDALGNABDNIDDRBRAAKAHDATAKLOK

Min_cost(string st) 方法的使用

在此可能的方法中,我们应用了 min_cost(string st) 方法来打印不包含元音的字符串或句子。移除元音后,我们将再次反转整个特定字符串以获得所需的结果。

示例

//C++ program to reverse a string after removing vowels and capture the cost of that reverse string by using min_cost(string st)
#include<bits/stdc++.h>
using namespace std;
int min_cost(string st){
   string vow = "aeiou";
   int cost = 0;
   for(int i = 0; i < st.size(); i++){
      vector<int> costs;
      for(int j = 0; j < 5; j++)
      costs.push_back(abs(st[i] - vow[j]));
      cost += *min_element(costs.begin(),
      costs.end());
   }
   return cost;
}
int main(){
   string str = "arbrddindbangladeshkolkatadhaka";
   cout << (min_cost(str));
}

输出

34

方法 2:使用实用程序函数、两个单独的指针和 Findwinner (String str) 方法

实用程序函数的使用

在此可能的方法中,我们应用了各种实用程序函数方法来打印不包含元音的字符串或句子。移除元音后,我们将再次反转整个特定字符串以获得所需的结果。

char s[100], t[100];
int c, d = 0;
printf("VOWEL DELETE STATEMENT IS HERE\n");
gets(s);
for (c = 0; s[c] != '\0'; c++){
   if (check_vowel(s[c]) == 0){
      t[d] = s[c];
      d++;
   }
   for (int i = s.length() - 1; i >= 0; i--){
      reversed += s[i];
      return withoutVowels;
   }
   t[d] = '\0';
   strcpy(s, t);
   printf("String after deleting vowels: %s\n", s);
   return 0;
}
int check_vowel(char t){
if (t == 'a' || t == 'A' || t == 'e' || t == 'E' || t == 'i' || t == 'I' || t
=='o' || t=='O' || t == 'u' || t == 'U')
return 1;

示例

//C++ program to reverse a string after removing vowels by using utility function to check for vowel
#include<bits/stdc++.h>
using namespace std;
bool isVowel(char c){
   return (c=='a' || c=='A' || c=='e' ||
   c=='E' || c=='i' || c=='I' ||
   c=='o' || c=='O' || c=='u' ||
   c=='U');
}
string reverseVowel(string str){
   int j=0;
   string vowel;
   for (int i=0; str[i]!='\0'; i++)
   if (isVowel(str[i]))
   vowel[j++] = str[i];
   for (int i=0; str[i]!='\0'; i++)
   if (isVowel(str[i]))
   str[i] = vowel[--j] ;
   return str;
}
int main(){
   string str = "GOOD MORNING KOLKATA! I AM GOING TO DHAKA!";
   cout << reverseVowel(str);
   return 0;
}

输出

GAAD MORNING KOLKATI! A AM GOING TO DHOKO!

两个指针方法的使用

在此可能的方法中,我们将声明并在字符串上应用两个指针以打印不包含元音的字符串或句子。移除元音后,我们将再次反转整个特定字符串以获得所需的结果。

示例

//C++ program to reverse a string after removing vowels by using two pointers to check for vowel
#include<bits/stdc++.h>
using namespace std;
bool isVowel(char c){
   return (c=='a' || c=='A' || c=='e' ||
   c=='E' || c=='i' || c=='I' ||
   c=='o' || c=='O' || c=='u' ||
   c=='U');
}
string reverseVowel(string str){
   int i = 0;
   int j = str.length()-1;
   while (i < j){
      if (!isVowel(str[i])){
         i++;
         continue;
      }
      if (!isVowel(str[j])){
         j--;
        continue;
      }
      swap(str[i], str[j]);
      i++;
      j--;
   }
   return str;
}
int main(){
   string str = "I AM HERE IN DHAKA! IT IS A BEAUTIFUL CITY!";
   cout << reverseVowel(str);
   return 0;
}

输出

I UM HIRU AN DHEKA! IT IS A BAIETEFAL CITY!

FindWinner(string s) 方法的使用

在此可能的方法中,我们将应用 findWinner(String S) 来打印不包含元音的字符串或句子。移除元音后,我们将再次反转整个特定字符串以获得所需的结果。这是一种应用程序级方法,通过演示字符串反转过程并使用 findWinner(string s) 查找游戏的获胜者来查找游戏的获胜者。

示例

//C++ program to create an application level example to find winner game by demonstrating the string reverse process and find the winner of the game by using the findWinner(string s)
#include <bits/stdc++.h>
using namespace std;
void findWinner(string s){
   int vowels_count = 0,
   consonants_count = 0;
   for (int i = 0; i < s.size(); i++){
      if (s[i] == 'a'
      || s[i] == 'e'
      || s[i] == 'i'
      || s[i] == 'o'
      || s[i] == 'u'){
         vowels_count++;
      } else {
         consonants_count++;
      }
   }
   if (vowels_count == 0){
      if (consonants_count % 2 == 0){
         cout << "Player B";
      } else{
         cout << "Player A";
      }
   } else if (vowels_count == 1
   && consonants_count % 2 != 0){
      cout << "Player A";
   } else {
      cout << "D";
   }
}
int main(){
   string s = "Hi Rebeca, Rudra Here! How Are You?";
   findWinner(s);
   return 0;
}

输出

D

结论

今天在这篇文章中,我们学习了如何在 C++ 环境中实现构建和应用各种方法以从句子或字符串中打印不包含元音的句子的过程,以及反转结果值。通过上述逻辑、语法和算法;我们尝试构建一些 C++ 代码以有效地解决问题陈述。

更新于: 2023-12-27

198 次查看

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告