leetcode345. 反转字符串中的元音字母

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/love905661433/article/details/84137305

题目

编写一个函数,以字符串作为输入,反转该字符串中的元音字母。

示例 1:

输入: “hello”
输出: “holle”

示例 2:

输入: “leetcode”
输出: “leotcede”

说明:
元音字母不包含字母"y"。

解题

  1. 这一题其实和344的反转字符串是一个思路, 一样使用对撞指针
  2. 需要判断字母是不是元音字母, 非元音字母就跳过
  3. 为了节约时间, 提高性能, 分别将aeiouAEIOU10个字母以asc码作为下标, 放入一个boolean型数组中, 然后判断一个字母是不是元音时, 直接根据字母的asc码在数组中获取即可, 代码如下:
class Solution {
    // 空间换时间, 字母对应的最大是asc码是122
    // isVowel[i]为false表示i对应的字符不是元音, 为true是元音 
    private static boolean[] isVowel = new boolean[123];
    static{
        isVowel['a'] = true;
        isVowel['e'] = true;
        isVowel['i'] = true;
        isVowel['o'] = true;
        isVowel['u'] = true;
        isVowel['A'] = true;
        isVowel['E'] = true;
        isVowel['I'] = true;
        isVowel['O'] = true;
        isVowel['U'] = true;
    }
    
    
    public String reverseVowels(String s) {
        char[] chars = s.toCharArray();
        int left = 0, right = chars.length - 1;
        while(left < right){
            if(!isVowel[chars[left]]){
                left++;
                continue;
            }
            
            if(!isVowel[chars[right]]){
                right--;
                continue;
            }
            
   
            char temp = chars[left];
            chars[left] = chars[right];
            chars[right] = temp;
            left++;
            right--;
            
        }
        
        return new String(chars);
        
    }
    
    
    
}

猜你喜欢

转载自blog.csdn.net/love905661433/article/details/84137305