[抄题]:

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".

[暴力解法]:抽出来再放回去:不现实

时间分析:

空间分析:

[优化后]:

时间分析:

空间分析:

[奇葩输出条件]:

[奇葩corner case]:

[思维问题]:

[一句话思路]:

直接一个字符串甩过来,String vowels = "aeiouAEIOU";再切碎成数组即可

[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):

[画图]:

先调指针再交换。和qucik sort的区别:从外围开始,能换就换

[一刷]:

[二刷]:

[三刷]:

[四刷]:

[五刷]:

[五分钟肉眼debug的结果]:

[总结]:

直接一个字符串甩过来,String vowels = "aeiouAEIOU";再切碎成数组即可

[复杂度]:Time complexity: O(n) Space complexity: O(n)

[英文数据结构或算法,为什么不用别的数据结构或算法]:

双引号,用来引用字符串,单引号用来表示单个字符。字符+""双引号变成字符串

[关键模板化代码]:

先换指针,再交换值:

while (start < end) {
//adjust start, end
while (start < end && !vowels.contains(chars[start] + "")) {
start++;
}
while (start < end && !vowels.contains(chars[end] + "")) {
end--;
}
//exchange
char temp = chars[start];
chars[start] = chars[end];
chars[end] = temp;
//push to move on
start++;
end--;
}

[其他解法]:

hashset 需要一个个字母地加,不如字符串一刀切

[Follow Up]:

[LC给出的题目变变变]:

[代码风格] :

class Solution {
public String reverseVowels(String s) {
//cc
if (s == null) {
return s;
}
//ini
String vowels = "aeiouAEIOU";
char[] chars = s.toCharArray();
int start = 0, end = s.length() - 1; while (start < end) {
//adjust start, end
while (start < end && !vowels.contains(chars[start] + "")) {
start++;
}
while (start < end && !vowels.contains(chars[end] + "")) {
end--;
}
//exchange
char temp = chars[start];
chars[start] = chars[end];
chars[end] = temp;
//push to move on
start++;
end--;
} //return
return new String(chars);
}
}

最新文章

  1. 针对每种Windows Server 操作Excel、Word等Office组件遇到“ComException&quot;、”80070005“等COM错误的解决方案大汇总
  2. Android 性能测试
  3. Nodejs&#183;构建web应用
  4. Java多线程基础:进程和线程之由来
  5. hdoj 1789 Doing Homework again
  6. ASP.NET页面不被缓存
  7. 深度解析PHP数组函数array_combine
  8. nyoj 非洲小孩
  9. 使用Kubernetes需要注意的一些问题(FAQ of k8s)
  10. java json 转换
  11. FileZilla FTP Client
  12. 【nodejs】初识 NodeJS(四)
  13. spring boot + es
  14. javafx的scene大小不能在控制器中设置
  15. Python3NumPy——ndarray对象
  16. pyhanlp用户自定义词典添加实例说明
  17. JS 在页面上直接将json数据导出到excel,支持chrome,edge,IE10+,IE9,IE8,Safari,Firefox
  18. linux上通过lighttpd上跑一个C语言的CGI小页面以及所遇到的坑
  19. JS监听浏览器事件
  20. springmvc获取资源文件的两种方式(超简单)

热门文章

  1. 基于epoll的TP传输层实现
  2. Dreamweaver_CS6安装与破解
  3. 开源的UML建模工具
  4. oracle truncate闪回数据库恢复
  5. 前端后端json技术整理
  6. python-mao
  7. Linux:常用命令讲解(系统、防火墙、提权与文件传输)
  8. 【转】 Pro Android学习笔记(九三):AsyncTask(2):小例子
  9. NOIP2005普及组第3题 采药 (背包问题)
  10. linux 混杂设备驱动之adc驱动