题目要求
直接上代码
class Solution {
/**
* @param String $s
* @return Integer
*/
function lengthOfLongestSubstring($s) {
//abcadebfqcddd
$str = '';
$str_len = strlen($s);
$max_len = 0;
for($i=0; $i<$str_len; $i++){
//遍历
$loc = strpos($str, $s[$i]);
if($loc === false){
$str .= $s[$i];
}else{
$str = substr($str, $loc+1);
$str .= $s[$i];
}
if(strlen($str) > $max_len){
$max_len = strlen($str);
}
}
return $max_len;
}
}
思路分析
解析:这个题目解题思路的重点是想到分析出比较好的算法,我用的这个方法很简单,只要看过一次就能明白,关键在于怎么想到这个思路。
下面粘出博友的思路,我觉得写得很好,清晰。
注意事项
注意边界值:
- 包含空字符的字符串:“ ”
- 长度为0的空字符串:“”
- 没有任何重复字符的字符串:“dfslw”
- 都是重复值的字符串:“aaaaaaaaa”