1

「.」任意の 1 文字に一致します。'*' 直前の要素の 0 個以上に一致します。マッチングは、入力文字列全体 (部分的ではない) をカバーする必要があります。

関数プロトタイプは次のようになります: bool isMatch(const char *s, const char *p)

いくつかの例:

isMatch(“aa”,”a”) → false
isMatch(“aa”,”aa”) → true
isMatch(“aaa”,”aa”) → false
isMatch(“aa”, “a*”) → true
isMatch(“aa”, “.*”) → true
isMatch(“ab”, “.*”) → true
isMatch(“aab”, “c*a*b”) → true

最後の行

isMatch(“aab”, “c*a*b”) → true

*意味がわかりません。任意の文字列(文字のシーケンス)に一致する*ように、多くの文字のゼロに一致できると考えていますが、正しくないようです*

4

1 に答える 1

3

'*' 直前の要素の 0 個以上に一致します。

c*a*bに翻訳することができます

c - 0 回、a ​​- 2 回、b - 1 回

したがって、 と同等aabです。提供された定義で注目すべき重要な点は、「 '*' 0 個以上先行する要素に一致する. 」です。

于 2012-12-24T06:06:09.120 に答える