Given a string, print the longest substring without repeating characters. For example, the longest substrings without repeating characters for “ABDEFGABEF” are “BDEFGA” and “DEFGAB”, with length 6. For “BBBB” the longest substring is “B”, with length 1. The desired time complexity is O(n) where n is the length of the string.
Prerequisite: Length of longest substring without repeating characters
Input : GEEKSFORGEEKS Output : EKSFORG Input : ABDEFGABEF Output : BDEFGA
Approach: The idea is to traverse the string and for each already visited character store its last occurrence in a hash table(Here unordered_map is used as hash with key as character and value as its last position). The variable st stores starting point of current substring, maxlen stores length of maximum length substring and start stores starting index of maximum length substring. While traversing the string, check whether current character is present in hash table or not. If it is not present, then store current character in hash table with value as current index. If it is already present in hash table, this means the current character could repeat in current substring. For this check if the previous occurrence of character is before or after the starting point st of current substring. If it is before st, then only update the value in hash table. If it is after st, then find length of current substring currlen as i-st, where i is current index. Compare currlen with maxlen. If maxlen is less than currlen, then update maxlen as currlen and start as st. After complete traversal of string, the required longest substring without repeating characters is from s[start] to s[start+maxlen-1].
Time Complexity: O(n)
Auxiliary Space: O(n)
- Length of the longest substring without repeating characters
- Longest repeating and non-overlapping substring
- Longest substring such that no three consecutive characters are same
- Longest substring of only 4's from the first N characters of the infinite string
- Longest substring with K unique characters using Binary Search
- Find the longest substring with k unique characters in a given string
- Print the longest common substring
- Find the first non-repeating character from a stream of characters
- Largest substring with same Characters
- Longest Common Substring | DP-29
- Longest Non-palindromic substring
- Longest substring of vowels
- Longest Palindromic Substring | Set 1
- Longest Palindromic Substring | Set 2
- Longest substring with count of 1s more than 0s
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.
Improved By : rituraj_jain