# 917. Reverse Only Letters 仅仅反转字母 【string】 【easy】 給你一個字符串 s ,根據下述規則反轉字符串: 所有非英文字母保留在原有位置。 所有英文字母(小寫或大寫)位置反轉。 返回反轉後的 s 。 示例 1: ``` 輸入:s = "ab-cd" 輸出:"dc-ba" ``` 示例 2: ``` 輸入:s = "a-bC-dEf-ghIj" 輸出:"j-Ih-gfE-dCba" ``` 示例 3: ``` 輸入:s = "Test1ng-Leet=code-Q!" 輸出:"Qedo1ct-eeLg=ntse-T!" ``` 思路: 用left、right指標分別指向字串的頭尾,如果遇到的字元不是字母的話,指標分別往中間移動,停下來的時候,代表分別指向字母,交換左右兩指針的字元,直到字元會合。 ```java= class Solution { public String reverseOnlyLetters(String s) { int left = 0, right = s.length()-1; char[] cs = s.toCharArray(); while(left<right){ while(left<right && !Character.isLetter(cs[left])) left++; while(left<right && !Character.isLetter(cs[right])) right--; if(left<right){ char tmp = cs[left]; cs[left++] = cs[right]; cs[right--] = tmp; } } return String.valueOf(cs); } } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up