反转字符串中的元音字母

https://leetcode-cn.com/problems/reverse-vowels-of-a-string/

需要元音字母保存起来,然后看是否字符串中的字符有这些元音字母。

也是用到了双指针,因为需要交换,所以要定一个从左遍历,一个从右遍历,

如果不是元音的话,就直接放在新的字符串中,如果是元音的话,就和另外一个指针也是元音的交换顺序。

class solution{

    private final static HashSet<Character> vowels = new HashSet<>(

                                            Arrays.asList('a','e','i','o','u','A','E','I','O','U'));

    public String reverseVowels(String s){

        if(s == null) return null;

        int i = 0;

        int j = s.length() - 1;

        char[] result = new char[s.length()];

        while( i <= j){

            char ci = s.charAt(i);

            char cj = s.charAt(j);

            if(!vowels.contains(ci)){

                result[i++] = ci;

            }

            else if(!vowels.contains(cj)){

                result[j++] = cj;

            }

            else{

            result[i++] = cj;

            result[j++] = ci;

            }

        }

        return new String(result);

    }

}


定义了一个HashSet,之后要调用它的contains方法,判断遍历到的字符是否是元音

在new这个HashSet的时候用了Arrays.asList方法,并且还是用char的包装类Character

过程中还使用了String的charAt方法,返回的是指定索引处的字符

            

             

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。