344. Reverse String
Write a function that takes a string as input and returns the string reversed.
class Solution {
public:
string reverseString(string s) {
int n = s.size();
for(int i = 0; i < n/2; i++)
{
if(s[i] == s[n-i-1]) continue; //如果两个char一样就不调换了
char tmp = s[i];
s[i] = s[n-i-1];
s[n-i-1] = tmp;
}
return s;
}
};
345. Reverse Vowels of a String
Write a function that takes a string as input and reverse only the vowels of a string. 给定一个输入string,将其中的元音字母反序。
思路:用两个指针p和q储存string中还没有被交换过的第一个和最后一个元音的位置,交换后继续寻找下一个p和q的位置,当p >= q时说明反序完成。
class Solution {
public:
bool is_vowel(char c)
{
if(c == 'i' || c == 'e' || c == 'a' || c == 'u' || c == 'o') return true;
if(c == 'I' || c == 'E' || c == 'A' || c == 'U' || c == 'O') return true;
return false;
}
string reverseVowels(string s) {
int n = s.size();
int p = 0;
int q = n - 1;
while(p < q)
{
while(!is_vowel(s[p]) && p < q) p++;
while(!is_vowel(s[q]) && p < q) q--;
//cout<<"p:"<<p<<" q:"<<q<<endl;
char tmp = s[p];
s[p] = s[q];
s[q] = tmp;
p++;q--;
}
return s;
}
};