首页 > 开发 > JAVA > 正文

【leetcode80】Reverse Vowels of a String(元音字母倒叙)

2016-07-31 22:23:50  来源:慕课网

题目描述: 写一个函数,实现输入一个字符串,然后把其中的元音字母倒叙 注意   元音字母包含大小写,元音字母有五个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专栏,链接如下:   leetcode专栏