本题关键在于找到字符串中的元音字母,用i,j从字符串首尾向中间遍历,遇到元音字母时交换,直到i>=j结束。
代码:
class Solution {//英文字母中的元音字母有 a,e,i,o,u.
public:
int check(char c)
{
string S="aeiou";
return (string("")+c).find_first_of(S)!=string::npos;//find_first_of 搜索字符c是否在S串中出现,返回S中首次出现的位置,否则返回string::npos
}
string reverseVowels(string s) {
int i=0,j=s.size()-1;
while(i<j){
while(check(tolower(s[i]))==0)++i;//tolower转换为小写字母
while(check(tolower(s[j]))==0)--j;
if(i<j&&s[i]!=s[j]){
char c=s[i];
s[i]=s[j];
s[j]=c;
}
++i;
--j;
}
return s;
}
};