Suppose we have a string. We have to find the longest substring without repeating the characters. So if the string is like “ABCABCBB”, then the result will be 3, as there is a substring that is repeating, of length 3. That is “ABC”.
To solve this, we will follow these steps
- set i := 0, j := 0, set one map to store information
- ans := 0
- while j < length of string s
- if s[j] is not present in map, or i > map[s[j]], then
- ans := max(ans, j – i + 1)
- map[s[j]] := j
- otherwise
- i := map[s[j]] + 1
- ans := max(ans, j – i + 1)
- decrease j by 1
- increase j by 1
- if s[j] is not present in map, or i > map[s[j]], then
- return ans
Example (Python)
Let us see the following implementation to get better understanding
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"))Input
"ABCABCBB"
Output
3