मान लीजिए हमारे पास एक लोअरकेस स्ट्रिंग s है। इसमें अंग्रेजी अक्षर और साथ ही "?" सिंबल होता है। प्रत्येक "?" के लिए हमें या तो उसे हटाना होगा या किसी भी लोअरकेस अक्षर से बदलना होगा। हमें उस सबसे लंबे लगातार बढ़ते हुए सबस्ट्रिंग की लंबाई ढूंढनी है जो अक्षर "a" से शुरू होता है।
उदाहरण के लिए, यदि इनपुट है s = "vta???defke", तो आउटपुट 6 होगा, क्योंकि हम s को "vtabcdefke" में बदल सकते हैं और "abcdef" सबसे लंबा लगातार बढ़ता हुआ सबस्ट्रिंग है, और यह "a" से भी शुरू होता है।
एल्गोरिदम
maxlen := 0,length := 0,qmarks := 0- प्रत्येक कैरेक्टर
cके लिएsमें:- यदि
c == "?", तोqmarks += 1 - अन्यथा:
idx := ord(c) - ord("a")- यदि
length <= idx <= length + qmarksयाidx <= qmarks, तोlength = idx + 1, अन्यथाlength = 0 qmarks = 0
maxlen = max(maxlen, min(length + qmarks, 26))
- यदि
maxlenलौटाएं
उदाहरण कार्यान्वयन
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)) # आउटपुट: 6
इनपुट
"vta???defke"
आउटपुट
6