博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
345. Reverse Vowels of a String
阅读量:3573 次
发布时间:2019-05-20

本文共 1263 字,大约阅读时间需要 4 分钟。

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

两种思路,第一种,一次性遍历完保存出现元音的地方,然后再来替换,第二种,双向边遍历边变换。显然第一种耗时也相对耗空间。给出两种做法的代码。

单向遍历

单向遍历,用两个 ArrayList 分别按出现的顺序保存出现的元音与位置。之后再按顺序替换。耗时20ms。代码如下:

public class Solution {    public String reverseVowels(String s) {        char [] vowels = {
'a','e','i','o','u','A','E','I','O','U'}; ArrayList
list = new ArrayList<>(); ArrayList
loc = new ArrayList<>(); StringBuilder sb = new StringBuilder(s); for(int i = 0; i < s.length(); i++) { for(int j = 0; j < vowels.length; j++) { if(vowels[j] == s.charAt(i)) { list.add(vowels[j]); loc.add(i); break; } } } for(int i = 0; i < loc.size(); i++) { sb.setCharAt(loc.get(i), list.get(loc.size()-i-1)); } return sb.toString(); }}

双向替换

两个指针,一个从前走一个从后走,遇到元音后替换位置。代码如下:

public class Solution {    public String reverseVowels(String s) {        int start = 0;        int end = s.length() - 1;        String vowels = "aeiouAEIOU";        StringBuilder sb = new StringBuilder(s);        while(start < end) {            while(start

另外再分享一种双向算法。

转载地址:http://qjjgj.baihongyu.com/

你可能感兴趣的文章
快应用- 一套丰富完整的第三方组件库apex-ui
查看>>
快应用-实现添加购物车的动画效果
查看>>
快应用-Canvas实现尺子左右滑动的效果
查看>>
快应用-在快应用中接入友盟统计
查看>>
Java—将webp格式图片转为jpg或png (windows)
查看>>
快应用- 输入验证码精美效果的实现
查看>>
auto.JS 是什么?如何使用? 【图文讲解】
查看>>
快应用-华为市场快应用审核总是不通过,无法复现华为审核时的bug【经验贴】
查看>>
快应用- 丰富的快应用动画组件库
查看>>
JAVA——list子集为map时常用的一些操作方法
查看>>
爬虫篇——采集单机游戏(网页游戏),爬取小游戏
查看>>
抖音无水印视频下载,不用借助第三方网站【详细教程】
查看>>
推荐几款好用的Chrome插件,码农的利器。
查看>>
sql 数据库的优化【经验贴】
查看>>
反编译微信小程序 亲测成功 补充解决常见问题 (详细最新教程)
查看>>
一篇认识 Zookeeper
查看>>
Zookeeper 实战
查看>>
一篇认识kafka
查看>>
Kafka 实战
查看>>
一篇认识 Elasticsearch
查看>>