目录
这一题的所谓 滑动窗口 算法,看不懂,所以我用两层循环遍历的 暴力解法 来写了。
方法: 暴力循环遍历(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
这篇博客介绍了如何通过暴力循环遍历的方法解决滑动窗口算法问题,即找到字符串中最长的无重复字符子串。作者提供了一个PHP类Solution,包含lengthOfLongestSubstring方法,通过两层循环实现。虽然这种方法效率不高,但思路清晰,易于理解。测试结果显示,执行用时724ms,在PHP提交中击败了5.60%的用户,内存消耗17MB,击败了6.84%的用户。
https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/

1022

被折叠的 条评论
为什么被折叠?



