Computer >> Máy Tính >  >> Lập trình >> Python

Đảo ngược chỉ các chữ cái trong Python

Giả sử chúng ta có một chuỗi S, chúng ta phải tìm chuỗi đảo ngược mà tất cả các ký tự không phải là một chữ cái sẽ không thay đổi vị trí của chúng và tất cả các chữ cái đảo ngược vị trí của chúng. Vì vậy, nếu chuỗi đã cho là "a-bC-dEf-ghIj", thì đầu ra sẽ là "j-Ih-gfE-dCba"

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Chúng tôi sẽ sử dụng thư viện biểu thức chính quy để giải quyết vấn đề này
  • nếu S trống, thì trả về S
  • str:=một chuỗi rỗng, index1:=0 và index2:=độ dài của S - 1
  • while index1 <độ dài của S
    • nếu index2> =0 và S [index1] là bảng chữ cái và S [index2] là bảng chữ cái
      • str:=str + S [index2]
      • giảm chỉ số 2 đi 1 và tăng chỉ số 1 lên 1
    • else nếu S [index1] là bảng chữ cái thì giảm index2 đi 1
    • else nếu S [index1] không phải là bảng chữ cái, thì str:=str + S [index1], tăng index1 thêm 1
    • khác giảm chỉ số 2 đi 1 và tăng chỉ số 1 lên 1
  • trả về str

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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"))

Đầu vào

"a-bC-dEf-ghIj"

Đầu ra

"j-Ih-gfE-dCba"