function isMatch($s, $p) {
$sLen = strlen($s);
$pLen = strlen($p);
$dp = array_fill(0, $sLen+1, array_fill(0, $pLen+1, false));
$isMatch = function ($s, $p, $i, $j) {
if ($i==0) {
return false;
}
return $p[$j-1] == '.' || $p[$j-1] == $s[$i-1];
};
$dp[0][0] = true;
for ($i=0; $i<=$sLen; $i++) {
for ($j=1; $j<=$pLen; $j++) {
if ($p[$j-1] == '*') {
$dp[$i][$j] = $dp[$i][$j-2];
if ($isMatch($s, $p, $i, $j-1)) {
$dp[$i][$j] = $dp[$i][$j] || $dp[$i-1][$j];
}
} else {
if ($isMatch($s, $p, $i, $j)) {
$dp[$i][$j] = $dp[$i-1][$j-1];
}
}
}
}
return $dp[$sLen][$pLen];
}
正则表达式匹配【php版】
最新推荐文章于 2022-03-01 16:50:10 发布