给你一个字符串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
不含'\"'
或'\\'
Python:
class Solution:
def reverseOnlyLetters(self, S: str) -> str:
alist = list(S)
i = 0
j = len(S)-1
while i < j:
if alist[i].isalpha() and alist[j].isalpha():
alist[i], alist[j] = alist[j], alist[i]
i += 1
j -= 1
else:
if not alist[i].isalpha():
i += 1
if not alist[j].isalpha():
j -= 1
return ''.join(alist)
Java:
class Solution {
public String reverseOnlyLetters(String s) {
char[] arr = s.toCharArray();
int i = 0;
int j = arr.length-1;
while(i < j)
{
if(!Character.isLetter(arr[i]))
{
i++;
continue;
}
if(!Character.isLetter(arr[j]))
{
j--;
continue;
}
char a = arr[i];
arr[i] = arr[j];
arr[j] = a;
i++;
j--;
}
return String.valueOf(arr);
}
}
留言