- Given a string s, find the length of the longest substring without repeating characters.
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 * 104
- s consists of English letters, digits, symbols, and spaces.
Java:
class Solution {
public int lengthOfLongestSubstring(String s) {
int ans = 0;
HashMap<Character, Integer> map = new HashMap<>();
int left = 0;
for (int right=0; right < s.length(); right++) {
char ch = s.charAt(right);
if (!map.containsKey(ch)) {
map.put(ch, right);
}
else {
left = Math.max(left, map.get(ch) + 1);
map.put(ch, right);
}
ans = Math.max(ans, right - left + 1);
}
return ans;
}
}
Python:class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
char_set = set()
max_len, start = 0, 0
for i, c in enumerate(s):
while c in char_set:
char_set.remove(s[start])
start += 1
char_set.add(c)
max_len = max(max_len, i - start + 1)
return max_len
No comments:
Post a Comment