目录
这一题的所谓 滑动窗口 算法,看不懂,所以我用两层循环遍历的 暴力解法 来写了。
方法: 暴力循环遍历(PHP)
class Solution {
/**
* @param String $s
* @return Integer
*/
function lengthOfLongestSubstring($s) {
if ($s == null) return 0;
$arrs = str_split($s);
$n = count($arrs);
$max = 0;
for ($i = 0; $i < $n; $i++) {
for ($j = 0, $k = $i; $j < $n - $i; $j++, $k++) {
$pos[$j] = $arrs[$k];
if (in_array($arrs[$k + 1], $pos)) {
break;
}
}
$temp = count($pos);
if ($max < $temp) {
$max = $temp;
}
unset($pos);
}
return $max;
}
}
解释: 双 for 循环,第一层每循环一次就从下一个元素开始循环,第二层每循环一次就把当前元素加入到数组中,并且判断下一个元素是否在当前数组中已经存在,存在就跳出当前第二层的循环,开启下一次循环。最后比较第二层循环所得到的的数组长度,取最大值即为最长子串长度。
测试结果:
执行用时:724 ms, 在所有 PHP 提交中击败了5.60%的用户
内存消耗:17 MB, 在所有 PHP 提交中击败了6.84%的用户
通过测试用例:987 / 987