简单
相关标签
相关企业
给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。
元音字母包括 'a'、'e'、'i'、'o'、'u',且可能以大小写两种形式出现不止一次。
示例 1:
输入: s = "IceCreAm"
输出: "AceCreIm"
解释:
s 中的元音是 ['I', 'e', 'e', 'A']。反转这些元音,s 变为 "AceCreIm".
示例 2:
输入: s = "leetcode"
输出: "leotcede"
提示:
1 <= s.length <= 3 * 105s由 可打印的 ASCII 字符组成
题解:双指针直接遍历,处理好循环变量的更新时机即可。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char str[300000] = {'\0'};
scanf("%s", str);
int size, i, j;
char temp;
size = strlen(str);
i = 0;
j = size - 1;
while (i < j)
{
while (str[i] != 'a' && str[i] != 'e' && str[i] != 'i' && str[i] != 'o' && str[i] != 'u' && str[i] != 'A' && str[i] != 'E' && str[i] != 'I' && str[i] != 'O' && str[i] != 'U')
{
i ++;
}
while (str[j] != 'a' && str[j] != 'e' && str[j] != 'i' && str[j] != 'o' && str[j] != 'u' && str[j] != 'A' && str[j] != 'E' && str[j] != 'I' && str[j] != 'O' && str[j] != 'U')
{
j --;
}
if (i < j)
{
temp = str[i];
str[i] = str[j];
str[j] = temp;
}
i ++;
j --;
}
printf("%s", str);
return 0;
}