function findLongestSubstringWithoutRepeatingCharacters($str) {
$str_size = strlen($str);
$start = 0;
$end = 0;
$start_sub = 0;
$end_sub = 0;
// array_fill(int $start_index, int $count, mixed $value): array
$ASCII = array_fill(0, 256, 0);
while ($end < $str_size) {
if ($ASCII[ord($str[$end])] > 0) {
while ($str[$start] != $str[$end]) {
$ASCII[ord($str[$start])] = 0;
$start++;
}
$start++;
}
else {
$ASCII[ord($str[$end])] = $end + 1;
if ($end - $start > $end_sub - $start_sub) {
$start_sub = $start;
$end_sub = $end;
}
}
$end++;
}
for ($i = $start_sub; $i <= $end_sub; $i++) {
echo $str[$i];
}
}
$str = "xwwwqfwwxqwyq";
findLongestSubstringWithoutRepeatingCharacters($str);
/*
run:
xqwy
*/