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

Khớp chuỗi DI trong Python

Giả sử chúng ta có một chuỗi S chỉ chứa "I" (để biểu thị tăng) hoặc "D" (để biểu thị giảm), cho N =kích thước của S. Chúng ta phải trả về bất kỳ hoán vị A nào của [0, 1, ... , N] sao cho mọi i trong phạm vi 0, ..., N-1 -

Vì vậy, nếu đầu vào giống như "IDID", thì đầu ra sẽ là [0,4,1,3,2]

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

  • A:=một danh sách từ 0 đến N trong đó N là kích thước của S.
  • res =một danh sách trống
  • đối với mỗi phần tử j trong S, thực hiện
    • nếu j là I, thì xóa phần tử cuối cùng khỏi A và chèn vào res
    • nếu không, hãy xóa phần tử đầu tiên của A và chèn vào res
  • trả lại res

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

Ví dụ

class Solution:
   def diStringMatch(self, S):
      A=[i for i in range(len(S)+1)]
   return [A.pop((j=='I')-1) for j in S]+A
ob = Solution()
print(ob.diStringMatch("IDID"))

Đầu vào

"IDID"

Đầu ra

[0, 4, 1, 3, 2]