Leecode 345 翻转字符串中的元音字母-双指针法

简介: 做算法的步骤:写思路,标注步骤先实现大头考虑细节(越界问题、个例)题目

做算法题以来,最舒服的一道题😀

image.png


做算法的步骤:


写思路,标注步骤

先实现大头

考虑细节(越界问题、个例)

题目

image.png


思路

转换为char型数组

怎么判断是不是元音字母?我想到的是HashMap中的containsKey()方法,那就把元音字母存进Map里

反向双指针,向中间逼近,直到两指针重合或交叉

把结果集(char型数组)拼接成String型字符串

代码

class Solution {
    public String reverseVowels(String s) {
        //1.转换为char数组
        char[] a = s.toCharArray();
        //2.把原因字母存进HashMap,用来判断是不是元音字母
        Map<Character,Integer> map = new HashMap<>();
        char[] words = {'a','o','e','i','u','A','O','E','I','U'};
        for(int i=0;i<words.length;i++){
            map.put(words[i],1);
        }
        //3.双指针向中间逼近,遇到元音字母互换位置,直到两指针重合或交叉
        int i=0;
        int j=a.length-1;
    while(i<j){
        char word1=a[i];
        char word2=a[j];
        if(!map.containsKey(word1)){
            i++;
        }
        if(!map.containsKey(word2)){
            j--;
        }
        if(map.containsKey(word1)&&map.containsKey(word2)){//交换位置
            char temp = word1;
            a[i]=word2;
            a[j]=temp;
            i++;
            j--;
        }
    }
    StringBuilder builder = new StringBuilder();
    for(int k=0;k<a.length;k++){
        builder.append(a[k]);
    }
    String result = String.valueOf(builder);
    return result;
    }
}```


目录
打赏
0
0
0
0
37
分享
相关文章
|
10月前
leetcode-917:仅仅反转字母
leetcode-917:仅仅反转字母
53 0
|
10月前
|
字符旋转及逆序输出问题
写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 =AABCD和s2 = BCDAA,返回1 给定s1=abcd和s2=ACBD,返回0.
【Leetcode -231. 2的幂 -242.有效的字母异位词 -258.各位相加】
【Leetcode -231. 2的幂 -242.有效的字母异位词 -258.各位相加】
51 0
【LeetCode】917. 仅仅反转字母、387. 字符串中的第一个唯一字符
目录 917. 仅仅反转字母 387. 字符串中的第一个唯一字符
63 0
给定一个只由左括号和右括号的字符串,返回最长的有效括号子串的长度。如何解答呢?
给定一个只由左括号和右括号的字符串,返回最长的有效括号子串的长度。如何解答呢?
|
9月前
917. 仅仅反转字母
917. 仅仅反转字母
|
10月前
345.反转字符串中的元音字母
345.反转字符串中的元音字母
48 0
|
10月前
|
leetcode-151:翻转字符串里的单词
leetcode-151:翻转字符串里的单词
76 0
【Leetcode -342. 4的幂 -344.反转字符串 -345.反转字符串中的元音字母】
【Leetcode -342. 4的幂 -344.反转字符串 -345.反转字符串中的元音字母】
56 0
LeetCode 821. 字符的最短距离
给你一个字符串 s 和一个字符 c ,且 c 是 s 中出现过的字符。
157 0