您的位置:首页 > 其它

Reverse Vowels of a String

2016-04-29 22:57 477 查看
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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: