LeetCode刷题之917. 仅仅反转字母
我不知道将去向何方,但我已在路上! |
---|
时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! |
- 题目:
给定一个字符串 S
,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。 - 示例:
示例 1 :
输入:"ab-cd"
输出:"dc-ba"
示例 2:
输入:"a-bC-dEf-ghIj"
输出:"j-Ih-gfE-dCba"
示例 3:
输入:"Test1ng-Leet=code-Q!"
输出:"Qedo1ct-eeLg=ntse-T!"
S.length
<= 100- 33 <=
S[i].ASCIIcode
<= 122 S
中不包含 \ or "
class Solution:
def reverseOnlyLetters(self, S: str) -> str:
a = []
b = ['-1'] * len(S)
for i in range(len(S)):
if (S[i] >= 'a' and S[i] <= 'z') or (S[i] >= 'A' and S[i] <= 'Z'):
a.append(S[i])
else:
b[i] = S[i]
a.reverse()
for i in range(len(S)):
if b[i] != '-1':
a.insert(i,b[i])
return ("".join(a))
- 算法说明:
将是字母的字符保存到a=[]
列表中,并将a
翻转。将不是字母的字符保存到b=[‘-1’]*len(S)
中,用-1
填充b
列表,是为了记录非字母字符的位置;然后将b
中的非-1
字符按位置插入a
中,输出a
即可。