【力扣】仅仅反转字母

阅读: 评论:0

【力扣】仅仅反转字母

【力扣】仅仅反转字母

问题描述:

给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转

示例:

示例 1:

输入:"ab-cd"
输出:"dc-ba"

示例 2:

输入:"a-bC-dEf-ghIj"
输出:"j-Ih-gfE-dCba"

示例 3:

输入:"Test1ng-Leet=code-Q!"
输出:"Qedo1ct-eeLg=ntse-T!"

分析:

抓住题目要求的,只有字母能动,那么就用两个变量分别作为首下标及尾下标进行一个while循环,当首下标大于尾下标时,循环结束。循环体中,需要判断首下标和尾下标所指向的是不是字母。

如果只有首下标所指向的是字母,那么尾下标向前移动一位;

如果只有尾下标所指向的是字母,那么首下标向后移动一位;

如果首、尾下标所指向的都是字母,首先进行交换,然后首下标向后移动一位,尾下标向前移动一位。

代码: 

class Solution {public String reverseOnlyLetters(String S) {char[] a = S.toCharArray();int i =0;int j=a.length-1;while(i<j){if(a[i]>='A'&&a[i]<='Z'||a[i]>='a'&&a[i]<='z'){if(a[j]>='A'&&a[j]<='Z'||a[j]>='a'&&a[j]<='z'){swap(a,i,j);i++;j--;}else{j--;}}else{i++;}}return new String(a);}public void swap(char[] a,int i,int j){char tmp = a[i];a[i] = a[j];a[j] = tmp;}
}

 

本文发布于:2024-02-04 20:52:17,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170716153359502.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:字母   力扣
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23