java字母反过来_Java leetcode之仅仅反转字母 _好机友

本文主要记录一下leetcode之仅仅反转字母

sx0097kbss.jpeg?w=700

题目给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。 示例 1: 输入:"ab-cd" 输出:"dc-ba" 示例 2: 输入:"a-bC-dEf-ghIj" 输出:"j-Ih-gfE-dCba" 示例 3: 输入:"Test1ng-Leet=code-Q!" 输出:"Qedo1ct-eeLg=ntse-T!" 提示: S.length <= 100 33 <= S[i].ASCIIcode <= 122 S 中不包含 \ or " 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-only-letters 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解class Solution { public String reverseOnlyLetters(String S) { char[] chars = S.toCharArray(); int startIdx = 0; int endIdx = chars.length - 1; while (startIdx < endIdx) { boolean isStartLetter = true; boolean isEndLetter = true; if (!Character.isLetter(chars[startIdx])) { startIdx++; isStartLetter = false; } if (!Character.isLetter(chars[endIdx])) { endIdx--; isEndLetter = false; } if (isStartLetter && isEndLetter) { char tmp = chars[startIdx]; chars[startIdx] = chars[endIdx]; chars[endIdx] = tmp; startIdx++; endIdx--; } } return new String(chars); } }

小结

这里使用前后两个索引,在两个索引没相遇之前一直循环,若当前char不是字母则前进一位,若都是字母则交换并前进一位,最后返回结果。

doc

相关栏目:

Java

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值