首页 > 其他 > 详细

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

时间:2021-01-17 11:45:06      阅读:31      评论:0      收藏:0      [点我收藏+]

题目:编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
思路:将元音挑出来反转,再装回数组
代码:
class Solution {
public String reverseVowels(String s) {
//元音字母a、e、i、o、u
char[] ch = s.toCharArray();
char[] res = new char[s.length()];
StringBuilder sb =new StringBuilder();
for (int i = 0; i < ch.length; i++) {
if(Character.toLowerCase(ch[i])‘a‘
||Character.toLowerCase(ch[i])
‘e‘
||Character.toLowerCase(ch[i])‘i‘
||Character.toLowerCase(ch[i])
‘o‘
||Character.toLowerCase(ch[i])‘u‘) {
sb.append(ch[i]);
} else {
res[i] = ch[i];
}
}
String tString = sb.reverse().toString();
int j = 0;
for (int i = 0; i < res.length; i++) {
if(res[i]
0) { //字符数组初始化默认值是0对应的ASCII码
res[i] = tString.charAt(j);
j++;
}
}
return String.valueOf(res); //数组转字符串 用toString会输出地址
}
}

解法2:双指针
思路:两指针分别指向头尾,只有当两个指针都指向元音时进行交换,否则只要不指向元音都要移动
class Solution {
public static String reverseVowels(String s) {
//元音字母a、e、i、o、u
int l=0,r=s.length()-1;
char[] res = s.toCharArray();
while(l<r) {
if(!isVowel(res[l])) {
l++;
continue;
}
if(!isVowel(res[r])) {
r--;
continue;
}
char t = res[l];
res[l] = res[r];
res[r] = t;
l++;
r--;
}
return String.valueOf(res);
}

public static boolean isVowel(char c) {
	return Character.toLowerCase(c)==‘a‘
			||Character.toLowerCase(c)==‘e‘
			||Character.toLowerCase(c)==‘i‘
			||Character.toLowerCase(c)==‘o‘
			||Character.toLowerCase(c)==‘u‘;
	
}

}

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

原文:https://www.cnblogs.com/nickyBlog/p/14288395.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!