function PrintSubstringWithKDistinctChars($s, $k) {
$list = array();
$size = strlen($s);
for ($i = 0; $i < $size; $i++) {
$ch = $s[$i];
$tmp = "" . strval($ch);
$set = array();
!in_array($ch,$set) ? array_unshift($set,$ch) : 0;
for ($j = $i + 1; $j < $size; $j++) {
$next_ch = $s[$j];
!in_array($next_ch,$set) ? array_unshift($set,$next_ch) : 0;
$tmp .= $next_ch;
if (strlen($tmp) >= $k && count($set) == $k) {
array_push($list,$tmp);
}
}
}
print_r($list);
}
$str = "characters";
$k = 4;
PrintSubstringWithKDistinctChars($str, $k);
/*
run:
Array
(
[0] => char
[1] => chara
[2] => charac
[3] => harac
[4] => aract
[5] => ract
[6] => acte
[7] => cter
[8] => ters
)
*/