LeetCode题解:345. Reverse Vowels of a String

题目链接:

345. 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”.

中文解释:

翻转一个字符串中的元音字母。
例如:
hello -> holle
leetcode -> leotcede


题目解释:

这个题目挺直接的,仅仅让翻转元音字母,那么我们用一个数据结构来存储一下所有元音字母:‘a’, ‘A’, ‘e’, ‘E’, ‘i’, ‘I’, ‘o’, ‘O’, ‘u’, ‘U’。这里要注意元音字母一共有10个,分大小写的。从两端开始向中间遍历string中的字母,定位到两个元音字母切头坐标不大于尾坐标时就交换两个字母,直到头坐标大于尾坐标。
这里我们使用了C++的STL标准模板库set。


AC代码:

class Solution {
public:
    string reverseVowels(string s) {
      set<char> myset;

      //将元音字母存到set集合中
      myset.insert('a');
      myset.insert('e');
      myset.insert('i');
      myset.insert('o');
      myset.insert('u');
      myset.insert('A');
      myset.insert('E');
      myset.insert('I');
      myset.insert('O');
      myset.insert('U');

      int i = 0;
      int j = s.length() - 1;

      //printf("%d %d\n", i, j);

      while(i < j){
        while(myset.find(s[i]) == myset.end()){
          i++;
          //cout<<i<<endl;
        }
        while(myset.find(s[j]) == myset.end()){
          j--;
        }
        //    cout<<j<<endl;
        if(i < j){
          char temp = s[i];
          s[i] = s[j];
          s[j] = temp;

          i++;
          j--;
        }
        else{
          break;
        }
      }
      return s;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值