力扣题目
给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。
元音字母包括 ‘a’、‘e’、‘i’、‘o’、‘u’,且可能以大小写两种形式出现不止一次。
示例 1:
输入:s = “hello”
输出:“holle”
示例 2:
输入:s = “leetcode”
输出:“leotcede”
代码
void reverse(char *str1, char *str2)
{
char temp;
temp = *str1;
*str1 = *str2;
*str2 = temp;
return;
}
int identifyVowel(char s)/*元音字母返回1,否则返回0*/
{
if(s == 'A' || s == 'E' || s == 'I' || s == 'O' || s == 'U' ||
s == 'a' || s == 'e' || s == 'i' || s == 'o' || s == 'u')
{
return 1;
}
else
{
return 0;
}
}
char* reverseVowels(char* s)
{
int len = strlen(s);
int i = 0;
int j = len - 1;
while(i < j)
{
if(identifyVowel(s[i]) == 0)/*如果不是元音字母就往后找*/
{
i++;
}
if(identifyVowel(s[j]) == 0)/*如果不是元音字母就往前找*/
{
j--;
}
if(identifyVowel(s[i]) == 1 && identifyVowel(s[j]) == 1)/*都是元音字母就交换位置*/
{
reverse(&s[i], &s[j]);
i++;
j--;
}
}
return s;
}