達成するために[バックル] leetcode力のPHP:最長部分文字列の無い繰り返し3つの文字

タイトル

文字列を考えると、あなたは繰り返された文字が含まれていないかを調べる  最長のサブストリング の長さを。

入力: "abcabcbbを"
出力: 3
説明:繰り返しのない文字の最長のサブストリングが「ABC」であるので、その長さは3ですので。
入力: "BBBBB"
出力: 1
説明: 最長のサブ文字列は、「B」せずに文字を繰り返しているため、その長さが1であるように。

入力:「pwwkew」
出力:3
説明:その長さが3であるので、「WKE」せずに文字を繰り返し最長のサブ文字列がされているので。、「pwkeは」サブシーケンスではなく、部分文字列であるあなたの答えは、長さの部分文字列でなければならないことに注意してください。

ソリューション

class Solution {

    /**
     * @param String $s
     * @return Integer
     */
    function lengthOfLongestSubstring($s) {
        if (strlen($s)==0) return 0;
        $map = [];
        $max = 0;
        $left = 0;
        for($i = 0; $i < strlen($s); $i++){
            if(array_key_exists($s[$i],$map)){
                $left = max($left, $map[$s[$i]] + 1);
            }
            $map[$s[$i]] = $i;
            $max = max($max,$i-$left+1);
        }
        return $max;
    }
}

 

公開された65元の記事 ウォン称賛81 ビュー340 000 +

おすすめ

転載: blog.csdn.net/Alen_xiaoxin/article/details/104525507