917. 反转字符串(isalpha())
解答一:
def reverseOnlyLetters(self, S):
i, j = 0, len(S) - 1
S = list(S)
while i < j:
while i < j and not S[i].isalpha(): i += 1
while i < j and not S[j].isalpha(): j -= 1
S[i], S[j] = S[j], S[i]
i, j = i + 1, j - 1
return "".join(S)
解答二:
class Solution:
def reverseOnlyLetters(self, S):
"""
:type S: str
:rtype: str
"""
newS = ""
for i, ch in enumerate(S):
# 如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
if ch.isalpha(): # 检测字符串是否只由字母组成
newS += ch
# print(newS) # TestngLeetcodeQ
newS = newS[::-1] # reverse string
# feed reversed strings back into
index = 0
r = ""
for i, ch in enumerate(S):
if ch.isalpha():
r += newS[index]
index += 1
else:
r += ch
return r