本文主要記錄一下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 <= 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不是字母則前進一位,若都是字母則交換並前進一位,最後返回結果。code