leetcode之仅仅反转字母

序本文主要记录一下leetcode之仅仅反转字母
leetcode之仅仅反转字母文章插图
题目给定一个字符串 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 <= 10033 <= S[i].ASCIIcode <= 122 S 中不包含 \ or "来源:力扣(LeetCode)链接:著作权归领扣网络所有 。 商业转载请联系官方授权 , 非商业转载请注明出处 。 题解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 (isStartLetterchars[startIdx] = chars[endIdx];chars[endIdx] = tmp;startIdx++;endIdx--;}}return new String(chars);}}小结【leetcode之仅仅反转字母】这里使用前后两个索引 , 在两个索引没相遇之前一直循环 , 若当前char不是字母则前进一位 , 若都是字母则交换并前进一位 , 最后返回结果 。
doc

  • 仅仅反转字母