反转字符串
问题描述
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。
解题思路
用两个指针,借助一个辅助的变量,将头尾进行交换。
class Solution {
public:
void reverseString(vector<char>& s) {
char temp;
int low=0,high=s.size()-1;
while(low<high){
temp=s[low];
s[low]=s[high];
s[high]=temp;
low++;
high--;
}
}
};
反转字符串中的元音字母
问题描述
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
解题思路
依然使用两个指针进行交换,只是比上一题多了一个判断当前指向的字母是否为元音。
class Solution {
public:
bool isVowels(char c){
if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u'||c=='A'||c=='E'||c=='I'||c=='O'||c=='U')
return true;
return false;
}
string reverseVowels(string s) {
char temp;
int low=0,high=s.size()-1;
while(low<high){
if(!isVowels(s[low]))
low++;
if(!isVowels(s[high]))
high--;
if(isVowels(s[low])&&isVowels(s[high])){
temp=s[low];
s[low]=s[high];
s[high]=temp;
low++;
high--;
}
}
return s;
}
};