Reverse Vowels of a String
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".
Solution
public class Solution {
public String reverseVowels(String s) {
if (s == null || s.length() == 0) {
return s;
}
StringBuffer sb = new StringBuffer(s);
StringBuffer vowles = new StringBuffer();
List<Integer> positions = new ArrayList<>();
for (int i = 0; i < s.length(); i++) {
if ("AIUEOaiueo".contains(s.substring(i, i + 1))) {
vowles.append(s.charAt(i));
positions.add(i);
}
}
StringBuffer reverse = vowles.reverse();
for (int i = 0; i < positions.size(); i++) {
sb.setCharAt(positions.get(i), reverse.charAt(i));
}
return sb.toString();
}
}