Given a string s, find the length of the longest substring without repeating characters.
Example 1: Input: s = "abcabcbb" Output: 3 Explanation: The answer is "abc", with the length of 3.
Example 2: Input: s = "bbbbb" Output: 1 Explanation: The answer is "b", with the length of 1.
Example 3: Input: s = "pwwkew" Output: 3 Explanation: The answer is "wke", with the length of 3. Notice that the answer must be a substring, "pwke" is a subsequence and not a substring.
Constraints:
0 <= s.length <= 5 * 104sconsists of English letters, digits, symbols and spaces.
Solution
Java
class Solution {
public int lengthOfLongestSubstring(String s) {
if(s.length() < 2) return s.length();
int l =0 ,r = 0;
Map<Character,Integer> map = new HashMap<Character, Integer>();
int longSeq = 1;
while(r < s.length()) {
char ch = s.charAt(r);
if(!map.containsKey(ch)) map.put(ch, r);
else {
l = Math.max((map.get(ch) + 1),l);
map.put(ch,r);
}
r++;
longSeq = Math.max((r-l), longSeq);
}
return longSeq;
}
}Agnibha Chandra