C++ 字符串中反转元音
给定一个字符串,任务是反转给定字符串中存在的所有元音。例如,
输入-1 −
a = “tutor”
输出 −
totur
解释 − 反转字符串“tutor”将生成输出“totur”。
输入-2 −
a = “mathematics”
输出 −
mithametacs
解释 − 反转字符串“mathematics”将生成输出“mithametacs”。
解决此问题的方法
给定一个字符串,我们必须反转其中存在的所有元音。解决此特定问题有几种方法,但我们必须在线性时间 O(n) 内解决此问题。
因此,解决此问题的更好方法是使用双指针方法,在该方法中,我们将采用两个指针 low 和 high,它们最初将分别指向最左边的元素和最右边的元素。在两个嵌套循环中,我们将检查最左边的字符是否为元音,最右边的字符是否也为元音,然后交换元素并移动右指针。
输入一个字符串。
一个布尔函数来检查字符是否为元音。
一个函数 reverseVowel(string &str) 以字符串作为输入并反转字符串中存在的元音。
初始化两个指针 low 和 high,分别指向“0”和最后一个字符。
检查最左边的字符和最右边的字符,如果它们是元音,则就地交换字符并递减最右边的指针。
重复这些步骤,直到访问完字符串的所有字符。
示例
#include <bits/stdc++.h>
using namespace std;
bool isVowel(char ch) {
return ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u' || ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U';
}
string reverseVowel(string &s){
int low = 0;
int high = s.size() - 1;
while (low < high) {
while (low < high && !isVowel(s[low])) {
low ++;
}
while (low < high && !isVowel(s[high])) {
high --;
}
swap(s[low++], s[high--]);
}
return s;
}
int main(){
string a= "tutorialspoint";
string ans= reverseVowel(a);
cout<<ans;
return 0;
}输出
运行以上代码将生成如下输出:
titorailspount
由于给定的字符串“tutorialspoint”包含元音,因此在反转元音后,它将生成输出“titorailspount”。
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP