关于LeetCode中Reverse Vowels of a String一题的理解

题目如下:

Write a function that takes a string as input and reverse only the vowels of a string.

Example 1:
Given s = "hello", return "holle".

Example 2:
Given s = "leetcode", return "leotcede".

Note:
The vowels does not include the letter "y".

    题目的要求是,给定一个由字母组成的字符串(没说只包含小写,所以大写字母出现的情况也需要被考虑进去,第一次提交的时候没有考虑到,结果GG),我们要做的是reverse所有出现的元音字母,即a,A,e,E,i,I,o,O,u,U这10个字母。比如说“hello”进行reverse后结果是“holle”这就是把“o”和“e”的位置进行了调换,然后是“leetcode”,元音字母一共有四个“三个e,一个o”,所以先将第一个e和最后一个e的位置进行互换,然后将第二个e和后面的o的位置进行调换就得到了结果“leotcede”。思路还是很简单,先把字符串转化成字符串数组,这是为了方便交换,然后使用两个指针分别从字母串头和尾进行扫描,对满足条件的两个元素进行交换即可。已Accepted的代码如下:

<span style="font-size:14px;">    public String reverseVowels(String s) {
        int i=0;
        int j=s.length()-1;
        char[] string_array = s.toCharArray();
        while(j>=0 && i<=j){
            if(!(Character.toLowerCase(string_array[i])=='a' || Character.toLowerCase(string_array[i])=='e' || Character.toLowerCase(string_array[i])=='i'
            || Character.toLowerCase(string_array[i])=='o' || Character.toLowerCase(string_array[i])=='u')){
                i++;
                continue;
            }
            if(Character.toLowerCase(string_array[j])=='a' || Character.toLowerCase(string_array[j])=='e' || Character.toLowerCase(string_array[j])=='i'
            || Character.toLowerCase(string_array[j])=='o' || Character.toLowerCase(string_array[j])=='u'){
                char temp = string_array[i];
                string_array[i] = string_array[j];
                string_array[j] = temp;
                i++;
            }
            j--;
        }
        return String.valueOf(string_array);
    }</span>
    评论区的思路也大致和上面的类似,花样一般在比较字符和元音字符是否相同上,这里就不贴代码了,想看的直接去评论区一探究竟便可。

    Reverse Vowels of a String评论区地址:https://leetcode.com/discuss/questions/oj/reverse-vowels-of-a-string

    最后,检讨一下,做这道题的原因纯粹是有一道别的题做不出来了,只好找一道简单题发泄一下了,争取明天把难题做出来,从哪里跌倒再从哪里爬起来,嘿嘿嘿。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值