版权声明:本文章为博主原创,转载请注明出处。保留所有权利。

Contents
  1. 1. 题目
  2. 2. 解析

Leetcode-345的解题过程。

  • 题目

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

    1
    2
    3
    4
    Example 1:
    Given s = "hello", return "holle".
    Example 2:
    Given s = "leetcode", return "leotcede".

Note:
The vowels does not include the letter “y”.

  • 解析

      和Leetcode-344类似,这道题也是关于反转字符串的问题,思路也类似,交换对称位置的字符就可以了。不同的是,从反转整个字符串变成了仅反转元音字母的顺序。因此,我们首先需要一个判断字母是不是元音的函数,这里要考虑一下大小写的问题。
      其次,找对称位置的字符的时候也不能再单纯地使用下标来计算,这里我设置了两个计数器i和j,分别从字符串s的左侧和右侧进行扫描,当i找到一个元音字母的时候,j开始扫描,同样找到一个元音字母的时候,交换这两个字母的位置,以此类推。
    代码如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    class Solution {
    public:
    string reverseVowels(string s) {
    int j = s.length()-1;
    if(j<1)return s;
    for (int i=0;i<s.length()-1;i++){
    if (v(s[i])){
    for (;j>-1;j--){
    if (i>=j){
    return s;
    }
    if(v(s[j])){
    char temp = s[i];
    s[i] = s[j];
    s[j] =temp;
    j--;
    break;
    }
    }
    }
    }
    return s;
    }
    bool v(char c){
    if (c=='a'||c=='e'||c=='i'||c=='o'||c=='u'||c=='A'||c=='E'||c=='I'||c=='O'||c=='U')
    return true;
    return false;
    }
    };

打赏

取消
扫码支持

你的支持是对我最好的鼓励

Contents
  1. 1. 题目
  2. 2. 解析