Python 中僅反轉字母


假設我們有一個字串 S,我們需要找到一個反轉後的字串,其中所有不是字母的字元不會改變其位置,所有字母反轉其位置。因此,如果給定的字串是 "a-bC-dEf-ghIj",則輸出將是 "j-Ih-gfE-dCba"

為了解決這個問題,我們將遵循以下步驟 -

  • 我們將使用正則表示式庫來解決這個問題
  • 如果 S 為空,則返回 S
  • str := 空字串,index1 := 0 且 index2 := S 的長度 – 1
  • 當 index1 < S 的長度
    • 如果 index2 >= 0 且 S[index1] 為字母且 S[index2] 為字母
      • str := str + S[index2]
      • 將 index2 減 1,並將 index1 加 1
    • 否則,如果 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"

更新於: 2020-04-28

2K+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.