LeetCode 917. Reverse Only Letters (仅仅反转字母)

题目标签:String

 利用left, right 两个pointers, 从左右开始 互换 字母。如果遇到的不是字母,那么继续移动到下一个。

 

Java Solution:

Runtime beats 29.87% 

完成日期:12/08/2018

关键点:two pointers

复制代码
 1 class Solution {
 2     public String reverseOnlyLetters(String S) {
 3         char[] charArr = S.toCharArray();
 4         int left = 0;
 5         int right = S.length() - 1;
 6         
 7         while(left < right)
 8         {
 9             if(Character.isLetter(charArr[left]) && Character.isLetter(charArr[right]))
10             {
11                 char temp = charArr[left];
12                 charArr[left] = charArr[right];
13                 charArr[right] = temp;
14                 
15                 left++;
16                 right--;
17             }
18             
19             if(!Character.isLetter(charArr[left]))
20                 left++;
21             if(!Character.isLetter(charArr[right]))
22                 right--;
23 
24         }
25         
26         return new String(charArr);
27     }
28 }
复制代码

参考资料:N/A

LeetCode 题目列表 - LeetCode Questions List

题目来源:https://leetcode.com/

posted @   Jimmy_Cheng  阅读(386)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 对象分配(Alloc)底层原理浅谈
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
· 为什么 .NET8线程池 容易引发线程饥饿
· golang自带的死锁检测并非银弹
阅读排行:
· 一个适用于 .NET 的开源整洁架构项目模板
· API 风格选对了,文档写好了,项目就成功了一半!
· 【开源】C#上位机必备高效数据转换助手
· .NET 9.0 使用 Vulkan API 编写跨平台图形应用
· MyBatis中的 10 个宝藏技巧!
点击右上角即可分享
微信分享提示