PHP - 正規表現によるマッチング

サポート「」と「*」正規表現のマッチングでを実装するためにあなたを招待し、あなたの文字列sと法pを与えます。

「」は任意の単一文字一致
『*』マッチがゼロまたはそれ以上の前述の要素のことを
、いわゆるマッチングは、文字列の文字列の全体ではなく一部を覆うようにします。

説明:

sが空であってもよく、小文字のみからAZ。
pは*空であるとAZ、および文字。とから、小文字のみが含まれていてもよいです。
例1:

入力:
S = "AA"
P = "A"
出力:偽
の解釈: ""文字列全体"AA"に一致することはできません。
例2:

入力:
S =「AA」
P =「A *」
出力:真の
説明:「*」マッチ「」は複数の要素は、この要素の前にあること、ゼロまたは上記の代表です。したがって、文字列は「AA」「」回繰り返されるとみなすことができます。
例3:

入力:
S = "AB&"
Pは= "*。"
出力:真の
説明: "*"は任意の文字の意味はゼロまたはそれ以上のマッチを( '*')( '')。
例4:

入力:
S = "AAB"
P = "C * A * B"
出力:真の
説明: 'C'が0である場合'*'手段''は一度繰り返され、さらに、ゼロまたはので。だから、文字列「AAB」を一致させることができます。
例5:

入力:
S = "ミシシッピ"
P = "MIS * IS * P *。"
出力:偽

出典:滞在ボタン(LeetCode)

この問題は少し難しいが、誰か他の人の答えを盗みます

クラスのソリューション{

    / **
     * @param文字列$ sの
     * @param文字列$ P
     * @returnブール
     * /
    関数isMatch($ S、$ P){
        (空($ p)は)空($ S)を返す場合。
        !$ first_match =空($ S)&&($ P [0] == $ S [0] || $ pを[0] == ''); 
        IF(strlenを($ P)> = 2 && $ P [1] == '*'){
            返します$ this-> isMatch($ S、SUBSTR($ P、2))|| ($ first_match &&の$ this - > isMatch(SUBSTR($ s、1)、$ P))。
        }そうしないと{
            返す$ first_match &&ます$ this-> isMatch(SUBSTR($ S、1)、SUBSTR($ P、1));
        }
    }
}
 
クラスのソリューション{

    / **
     * @param文字列$ sの
     * @param文字列$ P
     * @returnブール
     * /
    関数isMatch($ S、$ P){
        $ M = STRLEN($ S)。
        $ N = STRLEN($のP)。
        (array_fill 0、$ M + 1、(0、$ N + 1、偽))= array_fill F $。
        $ F [0] [0] = TRUE;
        {($ K ++; $ K <= $ N $ K = 2)のために
            $ F [0] [$ K] = [0] [$ K - 2] F $ && $ P [$ K - 1] == '*'。
        }
        用($ i = 1; $ I <= $ M、$ I ++){
            {($のJ ++; $ J <= $ N $ J = 1)のために
                IF($ S [$ I - 1] == $ P [$ J - 1] || $ P [$ J - 1] '' ==){
                    $ F [$ i]が[$ J = $ F [$ I - 1] [$ J - 1]。
                }
                もし($ P [$ J - 1] == '*'){
                    $ F [$ i]が[$ J] = [$ i]と[$ J - 2] F $ || 
                    $ F [$ I - 1] [$ J] &&($ S [$ I - 1] == $ P [$ J - 2] || $ P [$ J - 2] == '');
                }
            }
        }
        [$ M] [$ n]はF $を返します。
    }

}

おすすめ

転載: www.cnblogs.com/corvus/p/12110088.html
おすすめ