345. 反转字符串中的元音字母
程序员文章站
2024-03-19 22:18:58
...
解题思路:
- 本题为基础双指针法交换前后元音元素;
- 一般遇见字符串问题,能转成字符数组就尽量转(方便);
- 转换成数组后,分别定义前后两个索引指针用
while
依次遍历数组; - 定义
isVowel()
方法将非元音元素返回给判断处,然后移动指针直到符合元音的位置,然后tmp
进行交换即可; - 最后扫描完数组后,一定要在返回的时候再转成字符串 String 输出。
class Solution {
public String reverseVowels(String s) {
char[] arr = s.toCharArray();//先将字符串转成字符数组(方便操作)
int n = arr.length;
int l = 0;
int r = n - 1;
while(l < r){
while(l < n && !isVowel(arr[l])){//从左判断如果当前元素不是元音
l++;
}
while(r >= 0 && !isVowel(arr[r])){//从右判断如果当前元素不是元音
r--;
}
if(l >= r){//如果没有元音
break;
}
//交换前后的元音
char tmp = arr[l];
arr[l] = arr[r];
arr[r] = tmp;
l++;//这里要分开写,不要写进数组里面去
r--;
}
return new String(arr);//最后返回的时候要转换成字符串输出
}
private boolean isVowel(char ch){//判断是不是元音,如果不是元音才返回true
//这里要直接用return语句返回,不要返回true或者false
return ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u'
||ch=='A'|| ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U';
}
}
上一篇: PHP生成csv文件
下一篇: c# md5加密算法实例