345. 反转字符串中的元音字母

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

 

示例 1:

输入:"hello"
输出:"holle"
示例 2:

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

 

分析:

将字符串转为字符数组,在字符数组里将字符反转,解题思路使用双指针遍历方法。i从头遍历找到元音字母。j从尾遍历找到元音字母。当两者同时都找到元音字母的时候将两个字母在数组里反转。其他没有出现元音字母的地方直接赋值给字符数组。最后将字符数组在转化为字符串。

 

代码:

java代码:

 1 class Solution {
 2     public String reverseVowels(String s) {
 3         char[] c =new char[s.length()];
 4         if(s==null)
 5         {
 6             return null;
 7         }
 8         int i= 0;
 9         int  j = s.length()-1;
10         
11         while(j>=i)
12         {
13             if(!(s.charAt(i)=='a'||s.charAt(i)=='e'||s.charAt(i)=='i'||s.charAt(i)=='o'||s.charAt(i)=='u'||s.charAt(i)=='A'|| s.charAt(i) == 'E' || s.charAt(i) == 'I' || s.charAt(i) == 'O' || s.charAt(i) == 'U'))
14             {
15                 c[i]=s.charAt(i);
16                 i++;
17                 
18             }
19             else if(!(s.charAt(j)=='a'||s.charAt(j)=='e'||s.charAt(j)=='i'||s.charAt(j)=='o'||s.charAt(j)=='u'||s.charAt(j)=='A'|| s.charAt(j) == 'E' || s.charAt(j) == 'I' || s.charAt(j) == 'O' || s.charAt(j) == 'U'))
20             {
21                 c[j]=s.charAt(j);
22                 j--;
23             }else
24             {
25                 c[i]= s.charAt(j);
26                 c[j] = s.charAt(i);
27                 i++;
28                 j--;
29             }
30             
31         }
32         
33         return new String(c);
34 
35     }
36 }
View Code

虽然这题解出来了。但此种方法性能太差。

posted @ 2020-09-05 09:54  wangheq  阅读(187)  评论(0编辑  收藏  举报