Leetcode 44ワイルドカードのマッチング

件名の説明:

 

溶液は:モデル化されたLCSのDP [i] [j]の構築、1は完全な一致を示し、[I-1]およびpのマッチング[J-1]は、DP [I] [J] == Sを表します。状態遷移は次の通り:

pは[J-1] == '*' 時間は、または '*' が空であるとき、または '*' DPによって、この時間DPを[I] [J]と言うことですJ-1の位置に対応する文字にマッチします[I-1]〜[J]とDP [i]が状態[J-1]が決定されます。

DPによりp [J-1]!= '*' 時間、DP [I] [J]状態[I-1]〜[J-1]とS [I-1]、P [J-1]ここで、iの値が決定されます。

 

次のようにACコードは次のとおりです。

BOOL isMatch(ストリング S、文字列P){
         int型レンズ= s.length()。
        INT Lenp = p.length()。
        INT DP [レンズ+ 1 ] [Lenp + 1 ]。
        INTは iが= 0を I ++; I <=レンズのためのint型 J = 0 ; J <= Lenp; J ++)DP [I] [J] = 0 ; 
        DP [ 0 ] [ 0 ] = 1 ;
        以下のためのint型 J = 1; J <= Lenp; J ++)DP [ 0 ] [J] = DP [ 0 ] [J- 1 ] && P [J- 1 ] == ' * ' 


        以下のためにINT iが= 1 ; I <=レンズI ++ 
        { 
            ためINT J = 1 ; J <= Lenpあり、j ++ 
            { 

                場合(P [J- 1 ] == ' * ' 
                { 
                    DP [I]を[ J] = MAX(DP [I]、[J- 1 ]、DP [I- 1 ] [J])。
                } 
                
                { 
                    DP [I] [J] = DP [I- 1 ] [J- 1 ] &&(S [I- 1 ] == P [J- 1 ] | P [J- 1 ] == ' ' )。
                } 

            } 
        } 
        もし(DP [レンズ] [Lenp] == 1を返す リターン はfalse ; 
    }

 

おすすめ

転載: www.cnblogs.com/z1141000271/p/12157834.html