https://leetcode.com/problems/reverse-vowels-of-a-string/
给定一个字符串,字符串两端属于元音字母的字符互换位置;
C代码:
char* reverseVowels(char* s) {
int start = 0;
int end = strlen(s)-1;
char lChar;
char rChar;
int i = start,j = end;
while(i < j)
{
while(i <= end)
{
if(s[i] == 'U' || s[i] == 'A' || s[i] == 'E' || s[i] == 'I' || s[i] == 'O' || s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u')
{
lChar = s[i];
break;
}
i++;
}
while(j >= 0)
{
if(s[j] == 'U' || s[j] == 'A' || s[j] == 'E' || s[j] == 'I' || s[j] == 'O' || s[j] == 'a' || s[j] == 'e' || s[j] == 'i' || s[j] == 'o' || s[j] == 'u')
{
rChar = s[j];
break;
}
j--;
}
if(i < j)
{
s[i] = rChar;
s[j] = lChar;
i++;
j--;
}
}
return s;
}
Java代码:
public class Solution {
public String reverseVowels(String s) {
int start = 0;
int end = s.length() - 1;
int i = start,j = end;
char temp;
char[] str = s.toCharArray();
while(i < j)
{
while(i <= end)
{
if(str[i] == 'U' || str[i] == 'A' || str[i] == 'E' || str[i] == 'I' || str[i] == 'O' || str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u')
{
break;
}
i++;
}
while(j >= 0)
{
if(str[j] == 'U' || str[j] == 'A' || str[j] == 'E' || str[j] == 'I' || str[j] == 'O' || str[j] == 'a' || str[j] == 'e' || str[j] == 'i' || str[j] == 'o' || str[j] == 'u')
{
break;
}
j--;
}
if(i < j)
{
temp = str[i];
str[i] = str[j];
str[j] = temp;
i++;
j--;
}
}
return String.valueOf(str);
}
}