【LeetCode】345 Reverse Vowels of a String(java)
2016-05-04 16:15
603 查看
原题
题目要求
解法
Example 1:
Given s = “hello”, return “holle”.
Example 2:
Given s = “leetcode”, return “leotcede”.
代码中还有我找到的几个测试用例。
题目要求
解法
原题
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”,由于它只有这两个元音字母,所以”holle”就是最终结果。解法
迭代字符串的元素,找到第n个元音字母后,就尝试去找第len-1-n个元音字母,如果找到就交换位置,再进入下一次循环迭代;如果没找到,则退出循环。代码很像快速排序中处理第n个和第len-1-n个元素的方式。代码中还有我找到的几个测试用例。
public class Solution { public String reverseVowels(String s) { String vowels = "aoeiuAOEIU"; char[] a = s.toCharArray(); int i = 0; int j = a.length - i - 1; while (i < j) { while (i < j && !vowels.contains(a[i] + "")) { i++; } while (i < j && !vowels.contains(a[j] + "")) { j--; } if (i < j) { char c = a[i]; a[i++] = a[j]; a[j--] = c; } } return new String(a); } public static void main(String[] args) { Solution s = new Solution(); assert(s.reverseVowels("hello").equals("holle")); assert(s.reverseVowels("leetcode").equals("leotcede")); assert(s.reverseVowels("").equals("")); assert(s.reverseVowels("aA").equals("Aa")); assert(s.reverseVowels("Live on evasions? No I save no evil.").equals("Live on evasIons? No i save no evil.")); } }
相关文章推荐
- hdu4504java
- java 使用自定义元组
- JavaWeb学习总结(五十一)——邮件的发送与接收原理
- JavaWeb学习总结(五十)——文件上传和下载
- java虚拟机(JVM)
- Java多个版本安装问题
- JavaWeb学习总结(四十九)——简单模拟Sping MVC
- spring data jpa batch批处理
- MyEclipse下Maven的安装配置
- JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet
- javaweb学习总结(四十七)——监听器(Listener)在开发中的应用
- 从源码理解ArrayList.java
- java 类的初始化
- Java编程中快速排序算法的实现及相关算法优化
- javaweb学习总结(四十六)——Filter(过滤器)常见应用
- JavaMail系列(六) 搜索邮件
- javaweb学习总结(四十五)——监听器(Listener)学习二
- javaweb学习总结(四十四)——监听器(Listener)学习
- Spring的事务管理实现原理初探
- javaweb学习总结(四十二)——Filter(过滤器)学习