タイトル
文字列を考えると、あなたは繰り返された文字が含まれていないかを調べる 最長のサブストリング の長さを。
例
入力: "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;
}
}