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