今天是坚持写题解的第12天。
代码细节
可以写一个函数避免if语句过长的尴尬。
C语言代码实现
较易,省略解题思路。
int choose(char c);
char* reverseVowels(char* s) {
int len = strlen(s);
int left = 0, right = len - 1;
while (left < right) {
int cntl = 0, cntr = 0;
if (choose(s[left])){
cntl++;
}
if (choose(s[right])){
cntr++;
}
if (cntl ==1&&cntr==1 ) {
int temp = s[left];
s[left] = s[right];
s[right] = temp;
left++;
right--;
continue;
}
if (cntl == 1) {
right--;
continue;
}
else if (cntr == 1) {
left++;
continue;
}
left++;
right--;
}
return s;
}
int choose(char c) {
return c == 'a' || c == 'A' ||
c == 'e' || c == 'E' ||
c == 'i' || c == 'I' ||
c == 'o' || c == 'O' ||
c == 'u' || c == 'U';
}