滑动窗口算法-找出字符串中无重复的最长字符串
function lengthOfLongestSubstring($s): string
{
$max = 0; // 返回结果,初始化为0
$len = strlen($s); // 传入的字符串长度
$str = ''; // 维护的滑动窗口字符串
for ($i = 0; $i < $len; $i++) {
// 查询看当前字符串有没在滑动窗口内有重复的
$index = strpos($str, $s[$i]);
// 如果有重复的就分割,去掉重复前的,保留后面的作为新的滑动窗口
if ($index !== false) {
$str = substr($str, $index + 1);
}
// 添加当前字符串,组成新的滑动窗口
$str .= $s[$i];
// 获取滑动窗口的长度
// $strLen = strlen($str);
// 比较大小,最新的滑动窗口长度和旧返回结果,取两者较大值作为最新的返回结果
//$max = $strLen > $max ? $strLen : $max;
}
return $str;
}
$a = 'adbcababdaccfabcdeabcdef';
echo lengthOfLongestSubstring($a);
除此之外还有一种解法,
龙卷风之殇

浙公网安备 33010602011771号