DEV Community

Cover image for 3. Longest Substring Without Repeating Characters
MD ARIFUL HAQUE
MD ARIFUL HAQUE

Posted on

3. Longest Substring Without Repeating Characters

3. Longest Substring Without Repeating Characters

Medium

Given a string s, find the length of the longest substring without repeating characters.

Example 1:

  • Input: s = "abcabcbb"
  • Output: 3
  • Explanation: The answer is "abc", with the length of 3.

Example 2:

  • 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.

Example 4:

  • Input: s = ""
  • Output: 0

Constraints:

  • 0 <= s.length <= 5 * 104
  • s consists of English letters, digits, symbols and spaces.

Solution:

class Solution {

    /**
     * @param String $s
     * @return Integer
     */
    function lengthOfLongestSubstring($s) {
        $lastIndices = array_fill(0, 256, -1);
        $maxLen = 0;
        $curLen = 0;
        $start = 0;

        for ($i = 0; $i < strlen($s); $i++) {
            $cur = $s[$i];
            $curAscii = ord($cur);

            if ($lastIndices[$curAscii] < $start) {
                $lastIndices[$curAscii] = $i;
                $curLen++;
            } else {
                $lastIndex = $lastIndices[$curAscii];
                $start = $lastIndex + 1;
                $curLen = $i - $start + 1;
                $lastIndices[$curAscii] = $i;
            }

            if ($curLen > $maxLen) {
                $maxLen = $curLen;
            }
        }

        return $maxLen;
    }
}
Enter fullscreen mode Exit fullscreen mode

Contact Links

Top comments (0)