描述
Given a string S
, return the “reversed” string where all characters that are not a letter stay in the same place, and all letters reverse their positions.
Example 1:
1 2 Input: "ab-cd" Output: "dc-ba"
Example 2:
1 2 Input: "a-bC-dEf-ghIj" Output: "j-Ih-gfE-dCba"
Example 3:
1 2 Input: "Test1ng-Leet=code-Q!" Output: "Qedo1ct-eeLg=ntse-T!"
分析
双指针,从两边向中间靠近,将前后的字符进行交互,即可达到倒转的目的。
解决方案1(Java)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 class Solution { public String reverseOnlyLetters (String S) { char [] sCharsArray = S.toCharArray(); int left = 0 , right = sCharsArray.length - 1 ; while (left < right) { while (left < right && !Character.isLetter(sCharsArray[left])) { left++; } while (left < right && !Character.isLetter(sCharsArray[right])) { right--; } char tmp = sCharsArray[left]; sCharsArray[left] = sCharsArray[right]; sCharsArray[right] = tmp; left++; right--; } return new String(sCharsArray); } }