1.題目
給你一個(gè)字符串 s ,根據(jù)下述規(guī)則反轉(zhuǎn)字符串:
所有非英文字母保留在原有位置。
所有英文字母(小寫(xiě)或大寫(xiě))位置反轉(zhuǎn)。
返回反轉(zhuǎn)后的 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!"
提示
1 <= s.length <= 100
s 僅由 ASCII 值在范圍 [33, 122] 的字符組成
s 不含 '\"' 或 '\\'
2.思路
使用雙指針
3.代碼
object Solution {
def reverseOnlyLetters(s: String): String = {
? ? val charArray: Array[Char] = s.toCharArray
? ? var left = 0
? ? var right =charArray.length-1
? ? while (left<right){
? ? ? if(charArray(left)>='a'&& charArray(left)<='z'||charArray(left)>='A'&& charArray(left)<='Z'){
? ? ? ? if(charArray(right)>='a'&& charArray(right)<='z'||charArray(right)>='A'&& charArray(right)<='Z'){
? ? ? ? ? var temp = charArray(left)
? ? ? ? ? charArray(left)=charArray(right)
? ? ? ? ? charArray(right)=temp
? ? ? ? ? left = left + 1
? ? ? ? ? right = right - 1
? ? ? ? } else right = right - 1
? ? ? } else? left = left + 1
? ? }
? String.valueOf(charArray)
? }
}