Reverse Vowels of a String
Des
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”.
分析
这个题拿到后觉得很简单,但是自己写的复杂度高,我专门把元音字母给取出来了,这样能通过但是复杂度高,后来想出了如下的办法:从两边设计两个指针,往中间走,如果是元音就停下做交换,不是就往中间一直走,当两个都不走的时候也就是停下来需要做交换了。
Code
class Solution {
public:
string reverseVowels(string s) {
for(int i=0,j=s.length()-1;i<j;){
if(tolower(s[i])!='a'&&tolower(s[i])!='e'&&tolower(s[i])!='i'&&tolower(s[i])!='o'&&tolower(s[i])!='u'){
i++;
}
else if(tolower(s[j])!='a'&&tolower(s[j])!='e'&&tolower(s[j])!='i'&&tolower(s[j])!='o'&&tolower(s[j])!='u'){
j--;
}
else{
char ch=s[i];
s[i]=s[j];
s[j]=ch;
i++;j--;
}
}
return s;
}
};