PHP•wildcard-matching/solution.php
class Solution {
function isMatch($s, $p) {
$m = strlen($s);
$n = strlen($p);
$dp = array_fill(class="syntax-number">0, $m + class="syntax-number">1, array_fill(class="syntax-number">0, $n + class="syntax-number">1, false));
$dp[class="syntax-number">0][class="syntax-number">0] = true;
for ($j = class="syntax-number">1; $j <= $n; $j++) {
if ($p[$j - class="syntax-number">1] == class="syntax-string">'*') {
$dp[class="syntax-number">0][$j] = $dp[class="syntax-number">0][$j - class="syntax-number">1];
}
}
for ($i = class="syntax-number">1; $i <= $m; $i++) {
for ($j = class="syntax-number">1; $j <= $n; $j++){
if ($p[$j - class="syntax-number">1] == class="syntax-string">'*') {
$dp[$i][$j] = $dp[$i][$j - class="syntax-number">1] || $dp[$i - class="syntax-number">1][$j];
} elseif ($p[$j - class="syntax-number">1] == class="syntax-string">'?' || $s[$i - class="syntax-number">1] == $p[$j - class="syntax-number">1]) {
$dp[$i][$j] = $dp[$i - class="syntax-number">1][$j - class="syntax-number">1];
}
}
}
return $dp[$m][$n];
}
}
$solution = new Solution();
var_dump($solution->isMatch(class="syntax-string">"aa", class="syntax-string">"a"));
var_dump($solution->isMatch(class="syntax-string">"aa", class="syntax-string">"*"));
var_dump($solution->isMatch(class="syntax-string">"cb", class="syntax-string">"?a"));