编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
示例 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 }
虽然这题解出来了。但此种方法性能太差。