【LeetCode】 345. 反轉字串中的母音字母
阿新 • • 發佈:2018-11-11
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;
}
};