欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-19 22:18:58
...

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

解题思路:

  • 本题为基础双指针法交换前后元音元素;
  • 一般遇见字符串问题,能转成字符数组就尽量转(方便);
  • 转换成数组后,分别定义前后两个索引指针while 依次遍历数组;
  • 定义 isVowel() 方法将非元音元素返回给判断处,然后移动指针直到符合元音的位置,然后 tmp 进行交换即可;
  • 最后扫描完数组后,一定要在返回的时候再转成字符串 String 输出。
class Solution {
    public String reverseVowels(String s) {
        char[] arr = s.toCharArray();//先将字符串转成字符数组(方便操作)
        int n = arr.length;
        int l = 0;
        int r = n - 1;
        while(l < r){
            while(l < n && !isVowel(arr[l])){//从左判断如果当前元素不是元音
                l++;
            }
            while(r >= 0 && !isVowel(arr[r])){//从右判断如果当前元素不是元音
                r--;
            }
            if(l >= r){//如果没有元音
                break;
            }
            //交换前后的元音
            char tmp = arr[l];
            arr[l] = arr[r];
            arr[r] = tmp;
            l++;//这里要分开写,不要写进数组里面去
            r--;
        }
        return new String(arr);//最后返回的时候要转换成字符串输出
    }
    
    private boolean isVowel(char ch){//判断是不是元音,如果不是元音才返回true
        //这里要直接用return语句返回,不要返回true或者false
         return ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u'
                ||ch=='A'|| ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U';
    }
}

 

相关标签: Java