Given a string, find the length of the longest substring without repeating characters.
Example 1:
Input: "abcabcbb"
Output: 3
Explanation: The answer is "abc"
, with the length of 3.
Example 2:
Input: "bbbbb"
Output: 1
Explanation: The answer is "b"
, with the length of 1.
Example 3:
Input: "pwwkew" Output: 3 Explanation: The answer is"wke"
, with the length of 3. Note that the answer must be a substring,"pwke"
is a subsequence and not a substring.
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
res, chars = 0, dict()
i = j = 0
while j < len(s):
if s[j] in chars:
i = max(i, chars[s[j]] + 1)
res = max(res, j - i + 1)
chars[s[j]] = j
j += 1
return res
class Solution {
public int lengthOfLongestSubstring(String s) {
int res = 0;
Map<Character, Integer> chars = new HashMap<>();
for (int i = 0, j = 0; j < s.length(); ++j) {
char c = s.charAt(j);
if (chars.containsKey(c)) {
i = Math.max(i, chars.get(c) + 1);
}
chars.put(c, j);
res = Math.max(res, j - i + 1);
}
return res;
}
}