给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。

元音字母包括 'a'、'e'、'i'、'o'、'u',且可能以大小写两种形式出现不止一次。

示例 1:

输入:s = "hello"

输出:"holle"

示例 2:

输入:s = "leetcode"

输出:"leotcede"

方法一:双指针法

使用两个指针left和right对所需要的字符串相向地进行遍历。将left指针指向字符串的首位,right指针指向字符串的末位。在遍历的过程中,left指针不断地向右移动,直到指向一个元音字母(或者越界);同时,right指针不断地向左移动,直到指向一个元音字母(或者越界)。此时,如果left<right,就交换left和right所指向的元音字母,否则说明所有的元音字母均已遍历过,就可以推出遍历的过程。

以下两种写法均可实现:

char * reverseVowels(char * s){char vowel[]={"aoeiuAOEIU"};int length=strlen(s);int left=0;int right=length-1;while(left<right){while(left<length&&!strchr(vowel,s[left])){left++;}while(right>0 &&!strchr(vowel,s[right])){right--;}if(left<right){char temp=s[left];s[left]=s[right];s[right]=temp;left++;right--;}}return s;
}
char * reverseVowels(char * s){char vowel[]={"aoeiuAOEIU"};int length=strlen(s);for(int left=0,int right=length-1;left<right;){if(left<length&&!strchr(vowel,s[left])){left++;}if(right>0 &&!strchr(vowel,s[right])){right--;}if(left<right&&strchr(vowel,s[left])&&strchr(vowel,s[right])){char temp=s[left];s[left]=s[right];s[right]=temp;left++;right--;}}return s;
}

方法二:利用下标进行原数组的反转

利用循环遍历原数组,并且开辟一个新数组,遇到元音字母的时候,将该元音字母的下标存入到新数组中,并且记录新数组的长度,当新数组的长度大于等于2时,则利用新数组中存的元音字母下标对原数组中的元音字母进行反转(逆序)。

char * reverseVowels(char * s){char vowel[]={"aoeiuAOEIU"};int length=strlen(s);int pos[300000]={0};int m=0;for(int i=0;i<length;i++){if(strchr(vowel,s[i])){pos[m]=i;//开辟新数组记录原字符串中元音字母的下标m++;}}if(m>=2){for(int i=0;i<m/2;i++){//利用下标对原字符串中的元音字母进行逆序char temp=s[pos[i]];s[pos[i]]=s[pos[m-i-1]];s[pos[m-i-1]]=temp;}}return s;
}

【一】反转字符串中的元音字母相关推荐

  1. 345. 反转字符串中的元音字母

    345. 反转字符串中的元音字母 给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串. 元音字母包括 'a'.'e'.'i'.'o'.'u',且可能以大小写两种形式出现. 示例 1: ...

  2. 20200320:反转字符串中的元音字母(leetcode345)

    反转字符串中的元音字母 题目 思路与算法 代码实现 复杂度分析 题目 思路与算法 在复习没太多时间,因此随机一道中等难度以下的题,这道是一个很简单的双指针,不需要太多想法,直接双指针实现即可. 左指针 ...

  3. Java实现 LeetCode 345 反转字符串中的元音字母

    345. 反转字符串中的元音字母 编写一个函数,以字符串作为输入,反转该字符串中的元音字母. 示例 1: 输入: "hello" 输出: "holle" 示例 ...

  4. 345.反转字符串中的元音字母(Reverse Vowels of a String)

    题目描述 编写一个函数,以字符串作为输入,反转该字符串中的元音字母. 示例 1: 给定 s = "hello", 返回 "holle". 示例 2: 给定 s ...

  5. 反转字符串中的元音字母

    345. 反转字符串中的元音字母 给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串. 元音字母包括 'a'.'e'.'i'.'o'.'u',且可能以大小写两种形式出现. 示例 1: ...

  6. 算法--------数组------反转字符串中的元音字母

    编写一个函数,以字符串作为输入,反转该字符串中的元音字母.示例 1:输入: "hello" 输出: "holle" 示例 2:输入: "leetcod ...

  7. python反转字符串的元音字母_345. 反转字符串中的元音字母-----leetcode刷题(python解题)...

    [TOC] 题目 编写一个函数,以字符串作为输入,反转该字符串中的元音字母. 示例 1: 输入: "hello" 输出: "holle" 示例 2: 输入: & ...

  8. LeetCode 345. 反转字符串中的元音字母

    1. 题目 编写一个函数,以字符串作为输入,反转该字符串中的元音字母. 示例 1: 输入: "hello" 输出: "holle"示例 2: 输入: " ...

  9. Leetcode每日一题:345.reverse-vowels-of-a-string(反转字符串中的元音字母)

    思路:这道题有很多种办法解决,比如用一个vector存字符串中元音字母的索引,然后反转,或者用一个字符串res存原字符串中的元音字母(倒着存,从len-1开始遍历啊),然后遍历原字符串,把原来位置的元 ...

最新文章

  1. 使用最新版(2020)IntelliJ IDEA 新建 Spring Boot 2.0 项目
  2. Selenium Grid Node 安装配置(CentOS 7 版)
  3. webpack文件配置
  4. 谷歌浏览器打开标签会把之前的覆盖掉_Chrome 浏览器新更新解决了本地文件拖入导致的标签页意外关闭问题...
  5. SAP UI5 应用开发教程之三十五 - 如何把本地开发的 SAP UI5 应用部署到 ABAP 服务器上
  6. 深度 | 打败围棋冠军后,机器智能下一步能战胜黑客吗?
  7. 配置openldap_openldap环境搭建+集成JIRA服务
  8. 宽带连接不上,拨号宽带连接的创建。
  9. CTU Open Contest 2019 J. Beer Vision
  10. 【干货分享】硬件测试工程师必备基本技能,看这一篇就够!
  11. 【子衿技术】DBA进阶之路
  12. 微信公众平台开发[6] —— 微信开发集成类的使用
  13. reactjs中使用高德地图计算两个经纬度之间的距离
  14. 由OSS AccessKey泄露引发的思考
  15. 手机页面点击电话进入拨号界面---a链接的tel属性
  16. 在Mavne环境下,实现struts2和hibernate的NVN关系的注解式开发?
  17. windows 无法完成安装, 若要在此计算机上安装Windows, 请重新启动安装
  18. 视频教程-19全新mysql教程零基础入门实战精讲mysql视频DBA数据库视频教程SQL教程-MySQL
  19. python基础进阶之堆糖头像爬虫
  20. Oracle删除表从回收站恢复

热门文章

  1. Linux-CentOS 用户权限配置
  2. 新年新气象,接个私活赚点生活费?说说这里的弯弯绕
  3. 【API接口工具】postman-Workspaces工作空间 VS Scratch Pad草稿面板
  4. OPPO崩溃问题解决
  5. 第一次作业:阅读与准备作业
  6. Orange NLP实习面试
  7. 生日小助手的详细规划——本博文随时更新,持续有效
  8. “plusready“: 扩展API加载完成事件
  9. 十大排序算法JS实现以及复杂度分析
  10. mysql 迁移 ibdata1_mysql ibdata1文件迁移