力扣345-反转字符串中的元音字母——双指针法

题目描述

给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。

元音字母包括 'a''e''i''o''u',且可能以大小写两种形式出现

解决思路

  1. 首先建立一个 char 型数组,存放所有元音字母的大小写形式;
  2. 定义两个指针 i ,j ,分别指向输入字符串的首尾端;
  3. 然后新建一个和输入字符一样大小的char 型数组,分别对比两个指针处的字母;
  4. 如果两个指针处的字母均不为元音字母,则需要向左或向右移动指针;
  5. 左边指针指向字母不为元音,则需要把左指针右移;
  6. 右边指针指向字母不为元音,则需要把右指针左移;
  7. 循环条件是:左指针 <= 右指针;
  8. 需要注意:string 字符串求长度用 s.length();
  9. 从string中取第 i个字符用 s.charAt(i);

输入输出示例

力扣345-反转字符串中的元音字母——双指针法_第1张图片

 

代码

class Solution {
    public char[] arr = new char[]{'a','e','i','o','u','A','E','I','O','U'};
    public String reverseVowels(String s) {
        if(s.equals(null)) return null;
        int i = 0;
        int j = s.length() - 1;
        char[] target = new char[s.length()];
        while(i <= j){
            char ci = s.charAt(i);
            char cj = s.charAt(j);
            if(!isWords(ci)){
                target[i++] = ci;
            }else if(!isWords(cj)){
                target[j--] = cj;
            }else{
                target[i++] = cj;
                target[j--] = ci;
            }
        }
        return new String(target);
    }
    public boolean isWords(char c){
        for(int i =0;i

你可能感兴趣的:(从暴力搜索开始!,java,算法,数据结构)