【力扣】3. 无重复字符的最长子串

目录

方法: 暴力循环遍历(PHP)

测试结果:

官方链接:


这一题的所谓 滑动窗口 算法,看不懂,所以我用两层循环遍历的 暴力解法 来写了。

方法: 暴力循环遍历(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

官方链接:
力扣icon-default.png?t=L892https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值