-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGetMinStr.php
85 lines (72 loc) · 1.9 KB
/
GetMinStr.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?php
class GetMinStr {
public function __construct() {
;
}
public function getIt($arr)
{
$source = $arr[0];
$sub = $arr[1];
$len = strlen($sub);
echo $source . '<br>' . $sub . '<br>';
$hash = $this->makeHash($sub);
$i = 0;
$j = $len;
while (true) {
$test = $this->makeHash(substr($source, $i, $j - $i));
$found = true;
foreach ($hash as $k => $v) {
if (!array_key_exists($k, $test)) {
$found = false;
break;
}
if ($test[$k] < $hash[$k]) {
$found = false;
break;
}
}
if ($found) {
return substr($source, $i, $j - $i);
}
if ($j < strlen($source)) {
$i++;
$j++;
} elseif ($len < strlen($source)) {
$len++;
$i = 0;
$j = $len;
} else {
return "Not Found";
}
}
return "not found";
}
private function makeHash($in)
{
$hash = [];
for ($i = 0; $i < strlen($in); $i++) {
if (array_key_exists($in[$i], $hash)) {
$hash[$in[$i]]++;
} else {
$hash[$in[$i]] = 1;
}
}
return $hash;
}
private function dump($in, $die = false)
{
echo '<pre>';
print_r($in);
echo '</pre>';
if ($die) {
die('died in dump');
}
}
}
$arr1 = ["ahffaksfajeeubsne", "jefaa"];
$arr2 = ["aaffhkksemckelloe", "fhea"];
$a = new GetMinStr();
$answer = $a->getIt($arr1);
echo $answer . '<br>';
$answer = $a->getIt($arr2);
echo $answer . '<br>';