1.题目
给你一个字符串 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!"
提示
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)
}
}
网友评论