
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.Example 4:
Input: s = ""
Output: 0
0 <= s.length <= 5 * 104
s consists of English letters, digits, symbols and spaces.
class Solution {
public int lengthOfLongestSubstring(String s) {
Map<Character, Integer> hm = new HashMap<>();
int idx=0, len=0;
for(int i=0 ; i<s.length() ; i++) {
char c = s.charAt(i);
if(hm.containsKey(c) && idx<=hm.get(c)) {
idx = hm.get(c)+1;
}
hm.put(c, i);
len = Math.max(len, i-idx+1);
}
return len;
}
}
I found that solution very popular and helpful:
https://www.youtube.com/watch?v=-QPgQJl_CDg&ab_channel=EricProgramming