题目
给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。
元音字母包括 ‘a’、‘e’、‘i’、‘o’、‘u’,且可能以大小写两种形式出现。
思路
没有什么难度,很简单的数组判断交换。
代码
class Solution {
public String reverseVowels(String s) {
int length = s.length();
char[] word = s.toCharArray();
int left = 0;
int right = length-1;
int flag_left=0; //从左寻找到了原音字母的标记
int flag_right=0; //从右寻找到了原音字母的标记
while (left<right)
{
if (!check(word[left]))
++left;
else
flag_left=1;
if (!check(word[right]))
--right;
else
flag_right=1;
if (flag_left==1 && flag_right==1)
{
// 交换两个字母
char temp=' ';
temp=word[left];
word[left]=word[right];
word[right]=temp;
// 因为是交换后这两个位置一定会是原音字母,所以直接改变下标
++left;
--right;
// 交换之后,就要把等待交换的标记给清除掉
flag_left=0;
flag_right=0;
}
}
return String.valueOf(word);
}
public boolean check(char c)
{
return c=='a' || c=='e' || c=='i' ||c=='o' ||c=='u' ||c=='A' ||c=='E' ||c=='I' ||c=='O' ||c=='U';
}
}
结果
简单题,当时也不知道为啥,没有AC掉。