Write a function that takes a string as input and reverse only the vowels of a string.
Example 1:
Given s = "hello", return "holle".
Example 2:
Given s = "leetcode", return "leotcede".
只翻转元音
查找是否是元音
先是丑陋的代码
class Solution {
public:
string reverseVowels(string s) {
int start=0;
int end=s.size()-1;
int i;
while(start<=end)
{
while(s[start]!='a' && s[start]!='e' && s[start]!='i' && s[start]!='o' && s[start]!='u' && s[start]!='A' && s[start]!='E' && s[start]!='I' && s[start]!='O' && s[start]!='U')
{
start=start+1;
}
while(s[end]!='a' && s[end]!='e' && s[end]!='i' && s[end]!='o' && s[end]!='u' && s[end]!='A' && s[end]!='E' && s[end]!='I' && s[end]!='O' && s[end]!='U')
{
end=end-1;
}
if(start>end)
return s;
else
{
char swap=s[start];
s[start]=s[end];
s[end]=swap;
}
start=start+1;
end=end-1;
}
return s;
}
};
整理一下
class Solution {
public:
bool check(char s)
{
if(s=='a' || s=='e' || s=='i' || s=='o' || s=='u' || s=='A' || s=='E' || s=='I' || s=='O' || s=='U')
return false;
else return true;
}
string reverseVowels(string s) {
int start=0;
int end=s.size()-1;
int i;
while(start<end)
{
while(start<end && check(s[start]))
{
start=start+1;
}
while(start<end && check(s[end]))
{
end=end-1;
}
if(start>end)
return s;
else
{
char swap=s[start];
s[start]=s[end];
s[end]=swap;
}
start=start+1;
end=end-1;
}
return s;
}
};