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)
- nếu c giống với "?", thì
- 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