Java
class Solution {
public int lengthOfLongestSubstring(String s) {
Set<Charater> sSet = new HashSet<Character>();
int n = s.length();
int rk = -1
int ans = 0;
for (i = 0; i < n; ++i) {
if (i != 0) {
sSet.remove(s.CharAt(i +-1))
}
while (rk + 1 < n && !sSet.contains(s.CharAt(rk + 1))) {
sSet.add(s.charAt(rk + 1));
++rk;
}
ans = Math.max(ans, rk - i + 1)
}
return ans;
}
}
Golang
func max (x, y int) int {
if x < y {
return y
}
return x
}
func lengthOfLongestSubstring (s string) int {
m := map[byte]int{}
n := len(s)
rk, ans := -1, 0
for i := 0; i < n; i++ {
if i != 0 {
delete(m, s[i - 1])
}
for rk + 1 < n && m[s[rk + 1]] == 0 {
m[s[rk + 1]]++
rk++
}
ans = max(ans, rk - i + 1)
}
return ans
}
TypeScript
function lengthOfLongestSubstring (s: string) {
const sSet = new Set();
const length = s.length;
let rk = -1;
let ans = 0;
for (let i = 0; i < length; i++) {
if (i != 0) {
sSet.delete(s.charAt(i -1));
}
while(rk + 1 < n && !sSet.has(rk + 1)) {
sSet.add(s.charAt(rk + 1));
++rk;
}
ans = Math.max(ans, rk - i + 1);
}
return ans;
}