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

Chương trình tìm độ dài của chuỗi con dài nhất tăng liên tục trong Python

Giả sử chúng ta có một chuỗi chữ thường s. Điều này chứa các chữ cái tiếng Anh cũng như "?" Biểu tượng. Cho mỗi "?" chúng ta phải loại bỏ nó hoặc thay thế nó bằng bất kỳ ký tự viết thường nào. Chúng ta phải tìm độ dài của chuỗi con dài nhất tăng liên tiếp bắt đầu bằng chữ cái "a".

Vì vậy, nếu đầu vào là s =​​"vta ??? defke", thì đầu ra sẽ là 6, vì chúng ta có thể biến s thành "vtabcdefke" và "abcdef" là chuỗi con tăng liên tục dài nhất và điều này cũng bắt đầu bằng "a".

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

  • maxlen:=0
  • chiều dài:=0
  • qmarks:=0
  • đối với mỗi c trong s, thực hiện
    • nếu c giống với "?", thì
      • qmarks:=qmarks + 1
    • nếu không,
      • idx:=(ASCII của c) - (ASCII của "a")
      • length:=idx + 1 nếu length <=idx <=length + qmarks hoặc idx <=qmarks nếu không là 0
      • qmarks:=0
    • maxlen:=tối đa trong tổng số maxlen và (độ dài tối thiểu + dấu ấn và 26)
  • trả về maxlen

Ví dụ

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

def solve(s):
   maxlen = length = qmarks = 0
   for c in s:
      if c == "?":
         qmarks += 1
      else:
         idx = ord(c) - ord("a")
         length = idx + 1 if length <= idx <= length + qmarks or idx <= qmarks else 0
         qmarks = 0
      maxlen = max(maxlen, min(length + qmarks, 26))
   return maxlen

s = "vta???defke"
print(solve(s))

Đầu vào

"vta???defke"

Đầu ra

6