两个for
第一个for将每一个元音依次存放进一个char数组
第二个for,每检测到元音,就从char数尾部开始,依次赋值
如何检测元音呢?当然写一个冗长的if(),不过我们有更好的选择
hashset的contains,
或者String自带的contains,
或者建一个int[128],因为元音有5个,算上大小写,一共10个,他们的ascii值都在128以内,然后将元音对应的int[]值设为1,其它设为0,只要检测int[strs[i]] ?= 0即可判断是否为元音
1 class Solution { 2 public String reverseVowels(String s) { 3 if(s.length() == 0) 4 return ""; 5 6 String v = "aeiouAEIOU"; 7 char[] vowel = new char[s.length()]; 8 char[] s2 = s.toCharArray(); 9 int idx = 0; 10 11 for(int i=0; i<s.length(); i++){ 12 if(v.contains(s.charAt(i)+"")) 13 vowel[idx++] = s.charAt(i); 14 } 15 16 for(int i=0; i<s.length(); i++){ 17 if(v.contains(s.charAt(i)+"")) 18 s2[i] = vowel[--idx]; 19 20 } 21 return new String(s2); 22 } 23 }