元音字母包含大小写,元音字母有五个a,e,i,o,u
原文描述: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".
思路:- 使用HashSet的数据结构存储者10个字符
- 遍历字符串,使用int【s.length】记录元音的位置,元音的个数为n
- 遍历字符串,根据上一个数组,把所有的元音字母(索引为i)换成string.charAt(n-i-1)处的字符
public class Solution {
public String reverseVowels(String s) {
if(s == null){
return null;
}
int[] array = new int[s.length()];
int index = 0;
HashSet<Character> vowel = new HashSet<Character>();
vowel.add('a');
vowel.add('e');
vowel.add('i');
vowel.add('o');
vowel.add('u');
vowel.add('A');
vowel.add('E');
vowel.add('I');
vowel.add('O');
vowel.add('U');
for (int i = 0; i < s.length(); i++) {
if (vowel.contains(s.charAt(i))) {
array[index] = i;
index++;
}
}
char[] result = new char[s.length()];
result = s.toCharArray();
for (int i = 0; i < index; i++) {
result[array[i]] = s.charAt(array[index - i - 1]);
}
return String.valueOf(result);
}
}
更多的leetcode的经典算法,查看我的leetcode专栏