需求描述:
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
示例 1:
输入:“hello”
输出:“holle”
示例 2:
输入:“leetcode”
输出:“leotcede”
提示:
元音字母不包含字母 “y” 。
解题解析:
该题的目的很明确,即将元音字母进行反转即可,那么问题来了,什么叫元音字母呢?a、e、i、o、u 5个字母就是元音字母,所以我们只需反转这几个字母即可,其他字母不变。
思路解析:
我们可以定义两个下标left和right,分别从头往后、从最后往前进行遍历。
- 当left下标对应的值为元音字母时,则另一个下标往前移动,即right-1
- 反之则left+1。
- 都不为元音字母的情况下,left+1
- 都为元音字母的情况下,将值进行交换,同时left、right都+1
代码实现:
class Solution {
public String reverseVowels(String s) {
char[] strs = s.toCharArray();
int len = strs.length,left = 0,right = len - 1;
while (left < right){
if (isVowel(strs[left]) && isVowel(strs[right])){
char temp = strs[left];
strs[left] = strs[right];
strs[right] = temp;
left++;
right--;
}else if (isVowel(strs[right])){
left++;
}else if (isVowel(strs[left])){
right--;
}else{
left++;
}
}
String result = String.copyValueOf(strs);
return result;
}
private boolean isVowel(char c){
String origin = "aeiouAEIOU";
if (origin.indexOf(c) != -1){
return true;
}
return false;
}
}
运行结果:
总结:
好不容易有机会刷题,这是第一篇,就先简单过一遍,后面再做多种题解来扩散思路。
喜欢本文的话,可以关注一下公众号,每天定时更新一篇学习日记,让我们一起成长!