如何计算最长无重复子串的长度?

PHP 算法面试题
1
0
分享
推荐答案
展示答案

<?php $s = 'ababcdab'; echo lengthOfLongestSubstring($s); //计算最长无重复子序列的长度 function lengthOfLongestSubstring($s) {     //记录最长无重复子序列的长度     $maxLength = 0;     //记录窗口的最左位置     $left = -1;     //记录 $s 的长度     $s_len = strlen($s);     //记录字符及其位置     $hash = [];     for ($i = 0; $i < $s_len; $i++) {         //判断字符是否在窗口中         if (isset($hash[$s[$i]]) && $hash[$s[$i]] > $left) {             //将最左位置设置为当前字符上次出现时的位置             $left = $hash[$s[$i]];         }         //将当前位置及字符记录到hash表里         $hash[$s[$i]] = $i;         //最长长度应该是记录的长度与窗口长度两者之间的较大值         $maxLength = max($maxLength, $i - $left);     }     return $maxLength; }

答案已隐藏