Here is my solution in PHP to this problem.
class Solution {
/**
* @param String $s
* @return Integer
*/
function lengthOfLongestSubstring($s) {
$n = strlen($s);
$ans = 0;
$i = 0;
$j = 0;
$arr = [];
while ($i < $n && $j < $n) {
if (!in_array($s[$j], $arr)) {
$arr[] = $s[$j++];
$ans = max($ans, $j-$i);
} else {
array_splice($arr, 0, 1);
$i++;
}
}
return $ans;
}
}
And here is solution JavaScript based on this Udemy lesson:
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function(s) {
if (s.length <= 1) return s.length;
const seenChars = {};
let i=0, longest=0;
for (let j=0; j<s.length; j++) {
const currentChar = s[j];
const currentCharIndex = seenChars[currentChar];
if (currentCharIndex>=i) {
i = currentCharIndex+1;
}
longest = Math.max(longest, j-i+1);
seenChars[currentChar] = j;
}
return longest;
};