/ * * * @param {文字列} S * @param {文字列} P * @return {ブール} * / VAR isMatch = 関数(S、P){ せDP = []; LENましょう = s.length; _lenましょう = p.length。 ため(I = 0せ; I <= LEN; I ++ ){ dp.push([])。 DP [I] [ 0] = 0 ; } DP [ 0] [0] = 1 ; ため(I ++; I <= _len I = 0せ{) 場合 - (p.charAt(I)=== '*' && DP [0] [1 iは{]) DP [0] [I + 1] = 1 。 } 他{ DP [ 0] [I + 1] = 0 ; } } のためには、(LET I 0 =; I <LEN; I ++ ){ ため(LET J = 0; J <_len; J ++ ){ もし、((s.charAt(I)=== p.charAt(J)|| p.charAt(J)===)&& '' DP [I] [J]){ DP [I + 1] [J + 1] = 1 。 } そう であれば(p.charAt(J)=== '*' &&(DP [I + 1] [J] || DP [I]、[J + 1])&&(s.charAt(I)=== p.charAt(j - 1)|| p.charAt(j - 1)=== '' )){ DP [I + 1] [J + 1] = 1 。そう であれば(p.charAt(J)=== '*' && DP [I + 1] [j - 1 ]){ DP [I + 1] [J + 1] = 1 。 } 他{ DP [I + 1] [J + 1] = 0 ; } } } 戻りDP [LEN] [_ LEN]。 }。
如果p.charAt(J)== s.charAt(I):DP [I] [J] = DP [I-1] [J-1];
如果p.charAt(J)== '' :DP [I] [J] = DP [I-1]〜[J-1];
如果p.charAt(J)== '*':
如果p.charAt(J-1)= s.charAt(I! ):DP [I] [J] = DP [I]、[J-2] //この場合、*のみ空としてカウント
如果p.charAt(I-1)== s.charAt(I)またはp .charAt(I-1)== '':
DP [I] [J] = DP [I-1]〜[J] //この場合、複数のA *としてカウント
またはDP [I] [J] = DP [I]、[J-1] //この場合、単一のA *としてカウント
またはDP [I] [J] = DP [I]、[J-2] //この場合、*としてカウント空の
Qiaobi羅❤殿下の問題に対する解決策