编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
示例 1:
输入: "hello" 输出: "holle"
示例 2:
输入: "leetcode" 输出: "leotcede"
说明:
元音字母不包含字母"y"。
代码1:
public class Solution {
public String reverseVowels(String s) {
String vowels="aeiouAEIOU";
char[] a=s.toCharArray();
int i=0,j=a.length-1;
while(i<j){
while(i<j&&!vowels.contains(a[i]+"")){
i++;
}
while(i<j&&!vowels.contains(a[j]+"")){
j--;
}
if(i<j){
char temp=a[i];
a[i++]=a[j];
a[j--]=temp;
}
// i++;
// j--;
}
return new String(a);
}
}
代码2:
public class Solution {
public String reverseVowels(String s) {
Set<Character> set=new HashSet<>();
set.add('a');set.add('A');
set.add('e');set.add('E');
set.add('i');set.add('I');
set.add('o');set.add('O');
set.add('u');set.add('U');
char[] a = s.toCharArray();
int i = 0;
int j = a.length - i - 1;
while (i < j) {
while (i < j && !set.contains(a[i] )) {
i++;//System.out.println("i="+i);
}
while (i < j && !set.contains(a[j])) {
j--;//System.out.println("j="+j);
}
if (i < j) {
char c = a[i];
a[i] = a[j];
a[j] = c;
}
i++;
j--;//System.out.println("ai="+i);System.out.println("aj="+j);
}
return new String(a);
}
}
代码3:
public class Solution {
public String reverseVowels(String s) {
Set<Character> set=new HashSet<>();
StringBuilder sb=new StringBuilder(s);
set.add('a');set.add('A');
set.add('e');set.add('E');
set.add('i');set.add('I');
set.add('o');set.add('O');
set.add('u');set.add('U');
int i=0,j=sb.length()-1;
// System.out.println(set);
// System.out.println("j="+j);
while(i<j){
while(i<j&&!set.contains(sb.charAt(i))) i++;
while(i<j&&!set.contains(sb.charAt(j))) j--;
if(i<j){
char temp=sb.charAt(i);
sb.setCharAt(i,sb.charAt(j));
sb.setCharAt(j,temp);
}
i++;
j--;
}
return sb.toString();
}
}