版权声明:made by YYT https://blog.csdn.net/qq_37621506/article/details/83716829
1.题目
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
2.思路
遍历字符串,把元音字母放入向量中;
再次遍历字符串的时候,把这些元音字母再从向量中从后向前输出。
3.代码
class Solution {
public:
string reverseVowels(string s) {
int len=s.length();
vector<char>vol;
for(int i=0;i<len;i++){
if(s[i]=='a'||s[i]=='e'||s[i]=='i'||s[i]=='o'||s[i]=='u'||s[i]=='A'||s[i]=='E'||s[i]=='I'||s[i]=='O'||s[i]=='U')
vol.push_back(s[i]);
}
int size=vol.size();
for(int i=0,j=size-1;i<len;i++){
if(s[i]=='a'||s[i]=='e'||s[i]=='i'||s[i]=='o'||s[i]=='u'||s[i]=='A'||s[i]=='E'||s[i]=='I'||s[i]=='O'||s[i]=='U')
s[i]=vol[j--];
}
cout<<s;
return s;
}
};
4.优秀案例
判断是否为元音的函数;
遍历字符串,是元音则交换。
class Solution {
public:
bool isVowels(char s) {
return s == 'a' || s == 'e' || s == 'i' || s == 'o' || s == 'u'
|| s == 'A' || s == 'E' || s == 'I' || s == 'O' || s == 'U';
}
string reverseVowels(string s) {
int size = s.size();
int i = 0;
int j = size - 1;
while (i < j) {
if (isVowels(s[i]) && isVowels(s[j])) {
char temp = s[i];
s[i] = s[j];
s[j] = temp;
i++;
j--;
continue;
}
if (!isVowels(s[i])) {
i++;
}
if (!isVowels(s[j])) {
j--;
}
}
return s;
}
};