假设我们有一个字符串S,我们必须找到相反的字符串,其中所有非字母的字符都不会改变其位置,而所有字母都将其位置反转。因此,如果给定的字符串是“ a-bC-dEf-ghIj”,则输出将是“ j-Ih-gfE-dCba”
为了解决这个问题,我们将遵循以下步骤-
我们将使用正则表达式库解决此问题
如果S为空,则返回S
str:=空字符串,index1:= 0,index2:= S – 1的长度
而index1 <S的长度
str:= str + S [index2]
将index2减少1,并将index1增加1
如果index2> = 0并且S [index1]是字母,而S [index2]是字母
否则,如果S [index1]是字母,则将index2减1
否则,如果S [index1]不是字母,则str:= str + S [index1],将index1加1
否则将index2减少1,并将index1增加1
返回str
让我们看下面的实现以更好地理解-
class Solution:
def reverseOnlyLetters(self, S):
if not S:
return S
str_= ""
index1 = 0
index2 = len(S)-1
while index1<len(S):
#print(index1,index2)
if index2>=0 and S[index1].isalpha() and S[index2].isalpha():
str_+=S[index2]
index2 -= 1
index1 += 1
elif S[index1].isalpha():
index2-=1
elif not S[index1].isalpha():
str_+=S[index1]
index1+=1
else:
index2 -= 1
index1 += 1
return str_
ob1 = Solution()print(ob1.reverseOnlyLetters("a-bC-dEf-ghIj"))"a-bC-dEf-ghIj"
输出结果
"j-Ih-gfE-dCba"