【力扣题解】917. 仅仅反转字母
😊博主目前也在学习,有错误欢迎指正😊
🌈保持热爱 奔赴星海🌈
文章目录
-
- 一、题目
-
- 1、题目描述
- 2、基础框架
- 3、原题链接
- 二、解题报告
-
- 1、思路分析
- 2、代码详解
- 三、本题知识
一、题目
1、题目描述
2、基础框架
- Java版本框架代码如下:
class Solution { public String reverseOnlyLetters(String s) { }}
3、原题链接
917. 仅仅反转字母
二、解题报告
1、思路分析
(1)定义两个指针,一个指向字符串开头,一个指向字符串结尾,若左右指针都指向字母,则交换,否则移动指向非字母的指针。
2、代码详解
class Solution { public String reverseOnlyLetters(String s) { char[] chars = s.toCharArray(); int left = 0; int right = chars.length - 1; while(left < right) { if(isLetter(chars[left]) && isLetter(chars[right])) { swap(chars,left,right); left++; right--; } if(!isLetter(chars[left]) ) { left++; }if(!isLetter(chars[right])) { right--; } } return new String(chars); } //交换 public void swap(char[] arr,int i,int j) { char tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } //判断是否为字母 public boolean isLetter(char tmp) { return (tmp >= 'A' && tmp <= 'Z') || (tmp >= 'a' && tmp <= 'z'); }}
三、本题知识
双指针