(Easy) Reverse Vowels of a String - LeetCode
Description:
Write a function that takes a string as input and reverse only the vowels of a string.
Example 1:
Input: "hello"
Output: "holle"
Example 2:
Input: "leetcode"
Output: "leotcede"
Note:
The vowels does not include the letter "y".
Solution:
first attempt: failed one case.
class Solution { public String reverseVowels(String s) { if(s ==null|| s.length()==0){ return null; } String tmp = ""; for(int i = 0 ; i<s.length(); i++){ if(s.charAt(i)=='a'||s.charAt(i)=='e'||s.charAt(i)=='i'||s.charAt(i)=='o'||s.charAt(i)=='u'||s.charAt(i)=='A'||s.charAt(i)=='E'||s.charAt(i)=='I'||s.charAt(i)=='O'||s.charAt(i)=='U') tmp = tmp+s.charAt(i); } int k = tmp.length()-1; String res = ""; for(int i = 0; i<s.length();i++){ if(s.charAt(i)=='a'||s.charAt(i)=='e'||s.charAt(i)=='i'||s.charAt(i)=='o'||s.charAt(i)=='u'||s.charAt(i)=='A'||s.charAt(i)=='E'||s.charAt(i)=='I'||s.charAt(i)=='O'||s.charAt(i)=='U'){ res = res+tmp.charAt(k); k = k-1; } else{ res = res+s.charAt(i); } } return res; } }
Second Attempt
Solution:
class Solution { public String reverseVowels(String s) { if(s ==null|| s.length()==0){ return ""; } String tmp = ""; int start = 0; int end = s.length()-1; StringBuilder sb= new StringBuilder(s); boolean exchange_flag=false; boolean start_flag = false; boolean end_flag = false; Character tmp_char2 ='-'; Character tmp_char1 ='-'; while(start<end){ if(isVowel(s.charAt(start))){ start_flag = true; tmp_char1 = s.charAt(start); }else{ start = start+1; } if(isVowel(s.charAt(end))){ end_flag = true; tmp_char2 = s.charAt(end); } else{ end = end - 1; } if(start_flag&&end_flag){ sb.deleteCharAt(start); sb.insert(start,tmp_char2); sb.deleteCharAt(end); sb.insert(end,tmp_char1); start = start+1; end = end-1; start_flag = false; end_flag = false; } } /* for(int i = 0 ; i<s.length(); i++){ if(s.charAt(i)=='a'||s.charAt(i)=='e'||s.charAt(i)=='i'||s.charAt(i)=='o'||s.charAt(i)=='u'||s.charAt(i)=='A'||s.charAt(i)=='E'||s.charAt(i)=='I'||s.charAt(i)=='O'||s.charAt(i)=='U') tmp = tmp+s.charAt(i); } int k = tmp.length()-1; String res = ""; for(int i = 0; i<s.length();i++){ if(s.charAt(i)=='a'||s.charAt(i)=='e'||s.charAt(i)=='i'||s.charAt(i)=='o'||s.charAt(i)=='u'||s.charAt(i)=='A'||s.charAt(i)=='E'||s.charAt(i)=='I'||s.charAt(i)=='O'||s.charAt(i)=='U'){ res = res+tmp.charAt(k); k = k-1; } else{ res = res+s.charAt(i); } } */ return sb.toString(); } public boolean isVowel(Character cha){ if(cha=='a'|cha=='e'||cha=='i'||cha=='o'||cha=='u'||cha=='A'||cha=='E'||cha=='I'||cha=='O'||cha=='U'){ return true; } else{ return false; } } }
标签:
LeetCode
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合终身会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· golang中写个字符串遍历谁不会?且看我如何提升 50 倍
· C# 代码如何影响 CPU 缓存速度?
· 智能桌面机器人:使用 .NET 为树莓派开发 Wifi 配网功能
· C# 模式匹配全解:原理、用法与易错点
· 记一次SSD性能瓶颈排查之路——寿命与性能之间的取舍
· 时隔半年,拾笔分享:来自一个大龄程序员的迷茫自问
· 《程序员的底层思维》读后感
· 曾经风光无限的 Oracle DBA 已经落伍了吗?
· 不写一行代码 .NET 使用 FluentCMS 快速构建现代化内容管理系统(CMS)
· C# 锁机制全景与高效实践:从 Monitor 到 .NET 9 全新 Lock