每日一练-leetcode

反转字符串中的元音字母

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

示例 1:

输入:"hello"
输出:"holle"

示例 2:

输入:"leetcode"
输出:"leotcede"



此方法用的是双指针法:

  第一个指针只想头,第二个指针指向尾,当两边指针分别找到元音字母时交换,如何查原因字符是个知识点.indexOf(),交换完若头指针小于尾指针则继续前进指针;、

此题的难点我感觉在于字符串和字符数组的相互转化.toCharArray()

class Solution {
    public String reverseVowels(String s) {
        char[] rev = s.toCharArray();//将字符串转为字符数组
        int n = s.length();//数组的长度res.length;字符串的长度string.length();列表的长度LIst.size()
        int i = 0;
        int j = n-1;
        while(i < j){
            while(i < n && !includeYin(rev[i]))++i;
            while(j > 0 && !includeYin(rev[j]))--j;
            if(i < j){
                swap(rev,i,j);
                ++i;
                --j;
            }
            
        }
        return new String(rev);
    }
    public boolean includeYin(char k){
        return "aeiouAEIOU".indexOf(k) >= 0;//返回第一个符合的索引,若没有返回-1
    }
    public void swap(char[] rev,int i,int j){
        char temp;
        temp = rev[i];
        rev[i] = rev[j];
        rev[j] = temp;
    }
}

  

posted @ 2021-08-19 10:59  YBINing  阅读(27)  评论(0编辑  收藏  举报