मान लीजिए कि हमारे पास एक स्ट्रिंग है। हमें पात्रों को दोहराए बिना सबसे लंबा विकल्प खोजना होगा। तो अगर स्ट्रिंग "ABCABCBB" की तरह है, तो परिणाम 3 होगा, क्योंकि एक सबस्ट्रिंग है जो दोहरा रही है, लंबाई 3 की है। वह "एबीसी" है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे
- सेट i :=0, j :=0, जानकारी स्टोर करने के लिए एक मैप सेट करें
- उत्तर:=0
- जबकि j <स्ट्रिंग की लंबाई s
- यदि s[j] मानचित्र में मौजूद नहीं है, या i> map[s[j]], तो
- उत्तर :=अधिकतम (उत्तर, जे - i + 1)
- नक्शा[s[j]] :=j
- अन्यथा
- i :=map[s[j]] + 1
- उत्तर :=अधिकतम (उत्तर, जे - i + 1)
- j को 1 से घटाएं
- j को 1 से बढ़ाएं
- यदि s[j] मानचित्र में मौजूद नहीं है, या i> map[s[j]], तो
- वापसी उत्तर
उदाहरण (पायथन)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें
class Solution(object):
def lengthOfLongestSubstring(self, s):
i =0
j = 0
d={}
ans = 0
while j < len(s):
if s[j] not in d or i>d[s[j]]:
ans = max(ans,(j-i+1))
d[s[j]] = j
else:
i = d[s[j]]+1
ans = max(ans,(j-i+1))
j-=1
#print(ans)
j+=1
return ans
ob1 = Solution()
print(ob1.lengthOfLongestSubstring("ABCABCBB")) इनपुट
"ABCABCBB"
आउटपुट
3