leetcode 345.反转字符串中的元音字母(双指针 java)(有地方不懂)

https://leetcode-cn.com/problems/reverse-vowels-of-a-string/submissions/

 

先定义一个boolean型数组,令所有元音(注意大小写,aeiouAEIOU)所在的ascii码为true,其他为false,将s转成字符串型(toCharArray()函数),双指针依次判断,遇到元音即交换。

 

class Solution {
    private static boolean[] vowels=new boolean[123];     //第一处疑问,为什么要private和static修饰?
    static{
        vowels['a']=true;
        vowels['e']=true;
        vowels['i']=true;
        vowels['o']=true;
        vowels['u']=true;
        vowels['A']=true;
        vowels['E']=true;
        vowels['I']=true;
        vowels['O']=true;
        vowels['U']=true;
    }
    
    public String reverseVowels(String s) {
        char[] ans=s.toCharArray();
        int i=0,j=ans.length-1;
        while(i<j){
            if(!vowels[ans[i]])
            {
                i++;
                continue;
            }
            if(!vowels[ans[j]])
            {
                j--;continue;
            }
            char temp=ans[i];
            ans[i]=ans[j];
            ans[j]=temp;
            i++;
            j--;
        }
        return new String(ans);          //?这种形式不太懂,()里为什么可以直接填ans
    }
}

 

posted @ 2019-08-29 21:37  星辰大海。  阅读(256)  评论(0编辑  收藏  举报