PHP Genomic Range Query
function genomicRangeQuery(string $s, array $p, array $q): array
{
$r = [];
foreach ($p as $k => $pi) {
$qi = $q[$k] - $pi + 1;
$subStr = substr($s, $pi, $qi);
if (str_contains($subStr, 'A')) {
$r[] = 1;
} elseif (str_contains($subStr, 'C')) {
$r[] = 2;
} elseif (str_contains($subStr, 'G')) {
$r[] = 3;
} else {
$r[] = 4;
}
}
return $r;
}
This builds prefix counts for each DNA letter so every query can return the minimum impact factor quickly.