leetcode 10.新年の病棟の暴動のリハビリテーションプログラムの正規表現のマッチングDP

/ * * 
 * @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羅❤殿下の問題に対する解決策

おすすめ

転載: www.cnblogs.com/qq965921539/p/12283924.html