题意

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

输入: "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:

输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

代码实现

class Solution {

    /**
     * @param String $s
     * @return Integer
     */
    function lengthOfLongestSubstring($s) {
        //边界
        if (!$s || strlen($s) == 0) return 0;
        //初始化
        $array= [];
        $ret = 0;
        $start = 0;
        //遍历
        for ($i = 0; $i < strlen($s); $i++) {
           if (isset($array[$s[$i]]) && $start <= $array[$s[$i]]) {
               $start = $array[$s[$i]] + 1;
           } else {
               $ret = max($ret, $i - $start + 1);
           }
            $array[$s[$i]] = $i;
        }
        return $ret;
    }
}

解题思路

遍历字符串,将字符插入array数组中,array为[a => 0, b => 1]形式


本文由 一切随风 创作,可自由转载、引用,但需署名作者且注明文章出处。

10 条评论

  1. qwyynobjrz
    qwyynobjrz

    琼森帮归来

  2. bvajyfzaok
    bvajyfzaok

    html教程

  3. jjtboihnvj
    jjtboihnvj

    护肤惊魂

  4. rngnoqrznv
    rngnoqrznv

    假如爱有天意

  5. drpugbmuyz
    drpugbmuyz

    蓝色世界里的谋杀

  6. obowageizx
    obowageizx

    等待

  7. ocotxvsxls
    ocotxvsxls

    梁祝

  8. rpvwxxypxz
    rpvwxxypxz

    闹鬼城堡

  9. zpcdfdjklq
    zpcdfdjklq

    你的每一次呼吸

  10. legdtqcdux
    legdtqcdux

    随叫随到的圣诞节

添加新评论