<?php
/**
* Напишите реализацию для ф-ии strstr:
* function strstr(string $haystack, string $needle)
* нельзя использовать встроенные ф-ии php: substr, strtok, ...
* (*) это более удачная реализация, работает за О(n)
*/
/**
* Find substring starting in string, starting from some symbol(s)
* @param string $haystack
* @param string $needle
* @return string
*/
function my_strstr2(string $haystack, string $needle): string
{
$isFound = false;
$lenHaystack = strlen($haystack);
$lenNeedle = strlen($needle);
for($i = 0, $j = 0, $cnt = 0; $i < $lenHaystack, $j < $lenNeedle; $i++) {
if($haystack[$i + $j] == $needle[$j]) {
$j++;
} else {
$j = 0;
}
if($j >= strlen($lenNeedle)) {
$isFound = true;
break;
}
}
return ($isFound ? substr($haystack, $i) : '');
}
var_dump(my_strstr2('asdfghend', 'fg')); // 'fghend';
- Output for 8.0.1 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.7
- string(6) "fghend"
preferences:
113.72 ms | 402 KiB | 91 Q