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

Chương trình đếm số ký tự trong mỗi độ sâu dấu ngoặc bằng Python

Giả sử chúng ta có một chuỗi s chỉ bao gồm ba ký tự "X", "(", và ")". Chuỗi có các dấu ngoặc cân bằng và ở giữa một số "X" ở đó cùng với các dấu ngoặc lồng nhau có thể cũng có thể có một cách đệ quy. Chúng ta phải tìm số "X" ở mỗi độ sâu của dấu ngoặc tính bằng s, bắt đầu từ độ sâu nông nhất đến độ sâu nhất.

Vì vậy, nếu đầu vào là s =​​"(XXX (X (XX)) XX)", thì đầu ra sẽ là [5, 1, 2]

Chương trình đếm số ký tự trong mỗi độ sâu dấu ngoặc bằng Python

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

  • độ sâu:=-1
  • out:=một danh sách mới
  • đối với mỗi c trong s, thực hiện
    • nếu c giống với "(", thì
      • độ sâu:=độ sâu + 1
    • ngược lại khi c giống với ")" thì
      • độ sâu:=độ sâu - 1
    • nếu độ sâu bằng với kích thước của bề ngoài, thì
      • chèn số 0 vào cuối đoạn văn bản
    • nếu c giống "X", thì
      • out [depth]:=out [depth] + 1
  • quay trở lại

Ví dụ

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

 def giải quyết (s):depth =-1 out =[] for c in s:if c =="(":depth + =1 elif c ==")":depth - =1 nếu width ==len (out):out.append (0) if c =="X":out [deep] + =1 return outs ="(XXX (X (XX)) XX)" print (Expl (s))  

Đầu vào

 "(XXX (X (XX)) XX)" 

Đầu ra

 [5, 1, 2]