3. Longest Substring Without Repeating Characters
Python
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
char_index = {}
longest = 0
start = 0
for i, char in enumerate(s):
if char in char_index and char_index[char] >= start:
start = char_index[char] + 1
char_index[char] = i
longest = max(longest, i - start + 1)
return longest
16.58MB, 50ms
C++
#include <string>
#include <unordered_map>
#include <algorithm>
using namespace std;
class Solution {
public:
int lengthOfLongestSubstring(string s) {
unordered_map<char, int> charIndex;
int longest = 0;
int start = 0;
for (int i = 0; i < s.size(); i++) {
if (charIndex.find(s[i]) != charIndex.end() && charIndex[s[i]]
>= start) {
start = charIndex[s[i]] + 1;
}
charIndex[s[i]] = i;
longest = max(longest, i - start + 1);
}
return longest;
}
};
11.17MB, 12ms
Javascript
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function(s) {
let charIndex = new Map();
let longest = 0;
let start = 0;
for (let i = 0; i < s.length; i++) {
if (charIndex.has(s[i]) && charIndex.get(s[i]) >= start) {
start = charIndex.get(s[i]) + 1;
}
charIndex.set(s[i], i);
longest = Math.max(longest, i - start + 1);
}
return longest;
};
52.65MB, 78ms