Leetcode 345 Reverse Vowels in a String

两个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 }
原文地址:https://www.cnblogs.com/hwd9654/p/10944066.html