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

题目描述


编写一个函数,以字符串作为输入,反转该字符串中的元音字母。

示例 1:

输入:"hello"

输出:"holle"

条件分析


  1. 原地修改,考虑使用交换;

解题思路(指针对撞)


  1. 定义两个指针left和right分别指向字符串的首尾,分别移动,直到双方都找到元音字母,进行交换,并各自相向移动一位,一直到两个指针相遇;

编码如下


public String reverseVowels(String s) {
    char[] cs = s.toCharArray();
    int left = 0;
    int right = cs.length - 1;
    while (left < right) {
        if (!isAeiou(cs[left])) {
            left++;
            continue;
        }
        if (!isAeiou(cs[right])) {
            right--;
            continue;
        }
        swapChar(cs, left, right);
        left++;
        right--;
    }
    return new String(cs);
}

private boolean isAeiou(char c) {
    return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'
            || c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U';
}

private void swapChar(char[] cs, int i, int j) {
    char temp = cs[i];
    cs[i] = cs[j];
    cs[j] = temp;
}
上一篇:uaf


下一篇:利用frp将cs的shell派生到msf