Cho một chuỗi S, tìm chuỗi đảo ngược mà tất cả các ký tự không phải chữ cái giữ nguyên vị trí, chỉ các chữ cái đổi chỗ cho nhau. Ví dụ: chuỗi "a-bC-dEf-ghIj" sẽ cho kết quả "j-Ih-gfE-dCba".
Giải pháp
Các bước thực hiện:
- Sử dụng thư viện biểu thức chính quy (regex) để giải quyết.
- Nếu S rỗng thì trả về S.
- Khởi tạo chuỗi kết quả rỗng, index1 = 0, index2 = len(S) - 1.
- Trong khi index1 < len(S):
- Nếu index2 >= 0 và S[index1] là chữ cái và S[index2] là chữ cái: nối S[index2] vào kết quả, giảm index2, tăng index1.
- Ngược lại nếu S[index1] là chữ cái: giảm index2.
- Ngược lại nếu S[index1] không phải chữ cái: nối S[index1] vào kết quả, tăng index1.
- Ngược lại: giảm index2, tăng index1.
- Trả về chuỗi kết quả.
Ví dụ
Triển khai Python tham khảo:
class Solution:
def reverseOnlyLetters(self, S):
if not S:
return S
str_= ""
index1 = 0
index2 = len(S)-1
while index1<len(S):
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"