代码拉取完成,页面将自动刷新
同步操作将从 doocs/leetcode 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。
示例 1:
输入:"hello" 输出:"holle"
示例 2:
输入:"leetcode" 输出:"leotcede"
提示:
将字符串转为字符数组(或列表),定义双指针 p、q,分别指向数组(列表)头部和尾部,当 p、q 指向的字符均为元音字母时,进行交换。
依次遍历,当 p >= q
时,遍历结束。将字符数组(列表)转为字符串返回即可。
class Solution:
def reverseVowels(self, s: str) -> str:
if s is None:
return s
chars = list(s)
p, q = 0, len(chars) - 1
while p < q:
if chars[p] not in 'aeiouAEIOU':
p += 1
continue
if chars[q] not in 'aeiouAEIOU':
q -= 1
continue
chars[p], chars[q] = chars[q], chars[p]
p += 1
q -= 1
return ''.join(chars)
class Solution {
public String reverseVowels(String s) {
if (s == null) {
return s;
}
char[] chars = s.toCharArray();
int p = 0, q = chars.length - 1;
while (p < q) {
if (!isVowel(chars[p])) {
++p;
continue;
}
if (!isVowel(chars[q])) {
--q;
continue;
}
swap(chars, p++, q--);
}
return String.valueOf(chars);
}
private void swap(char[] chars, int i, int j) {
char t = chars[i];
chars[i] = chars[j];
chars[j] = t;
}
private boolean isVowel(char c) {
switch(c) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
return true;
default:
return false;
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。