假设我们有一个字符串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"