> 文档中心 > 【力扣题解】917. 仅仅反转字母

【力扣题解】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');    }}

三、本题知识

双指针

说说控