Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save flymio/1520cd76b13fdbc466b7e57c37aac2c9 to your computer and use it in GitHub Desktop.
Save flymio/1520cd76b13fdbc466b7e57c37aac2c9 to your computer and use it in GitHub Desktop.
<?
function lengthOfLongestSubstring($s) {
$a = str_split($s);
$max = '';
$cur = '';
$ch = '';
for($i=0;$i<sizeof($a);$i++){
$g = explode($a[$i],$cur);
if ($cur && sizeof($g)>1){
if (strlen($cur) > strlen($max)){
$max = $cur;
}
#echo "[old: $cur]\n";
$cur = substr($cur,strlen($g[0])+1).$a[$i];
#echo "[new: $cur]\n";
}
else{
$cur.=$a[$i];
}
}
#echo "[$cur, $max]\n";
return max(strlen($cur),strlen($max));
}
function lengthOfLongestSubstring1($s) {
$maxp = 0;
$cur = ''; $curp = 0;
if (empty($s))
return 0;
foreach(str_split($s) as $k => $a){
if ($cur){
$g = strpos($cur, $a);
}
if ($cur && $g !== false){
if ($curp > $maxp){
$maxp = $curp;
}
#echo "[old: $cur, $curp, $g]\n";
$cur = substr($cur,$g+1).$a; $curp -= $g;
#echo "[new: $a, $cur, $curp]\n";
}
else{
#echo "\n";
$cur.=$a;
$curp++;
}
}
//echo "[$cur, $max]\n";
return max($curp,$maxp);
}
//echo lengthOfLongestSubstring($argv[1]);
// echo "\n";
//for($k=0;$k<=10000;$k++){
//echo lengthOfLongestSubstring($argv[1]);
//echo "\n";
echo lengthOfLongestSubstring1($argv[1]);
echo "\n";
//}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment