Write a function that takes a string as input and reverse only the vowels of a string.
Example 1:
Given s = "hello", return "holle".
Example 2:
Given s = "leetcode", return "leotcede".
Note:
The vowels does not include the letter "y".
思路比较straight forward. 统计处原音的index, 存入一个list, 然后反向一下按照index插入就好了。
当然肯定有inplace的方法,以后补一下。
public String reverseVowels(String s) {
if(s == null || s.length() == 0) return "";
List<Integer> vowelsArray = new ArrayList<Integer>();
char[] split = s.toCharArray();
for(int i=0;i<split.length;i++){
if(split[i] == 'a'|| split[i] == 'e'||split[i] == 'i'
||split[i] == 'o'||split[i] == 'u'||split[i] == 'A'|| split[i] == 'E'||split[i] == 'I'
||split[i] == 'O'||split[i] == 'U'){
vowelsArray.add(i);
}
}
char[] result = s.toCharArray();
List<Integer> reverseArray = new ArrayList<Integer>(vowelsArray);
Collections.reverse(reverseArray);
for(int i=0;i<vowelsArray.size();i++){
result[vowelsArray.get(i)] = split[reverseArray.get(i)];
}
return String.valueOf(result);
}