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 } }