मान लीजिए कि हमारे पास एक स्ट्रिंग है। हमें पात्रों को दोहराए बिना सबसे लंबा विकल्प खोजना होगा। तो अगर स्ट्रिंग "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