リンク:https://leetcode-cn.com/problems/zheng-ze-biao-da-shi-pi-pei-lcof/
アイデア:
状態手段:F [i] [j]はSを表し、[私は、..]とP [J、...]マッチ
状態遷移:
1.P [j]は通常の文字であり、F [i]は[J] = S [I] == P [J] && F [I + 1] [J + 1]
2.P [J]是 ''、F [i]は[J] = F [I + 1] [J + 1]
3.P [J + 1]是 '*'、F [i]は[J] = F [I] [J + 2] || F [I + 1] [J]
コード:
クラスのソリューション{ パブリック: ベクトル <ベクトル< int型 >> F。 整数N、M。 BOOL isMatch(ストリング S、文字列P){ N = s.size()。 M = p.size()。 F =ベクトル<ベクトル< INT >>(N + 1、ベクトル< INT >(M + 1、 - 1 ))。 F [n]は[M] = 1 。 DP(0、0 、S、P)。 リターンDP(0、0 、S、P)。 } INT DP(int型のx、int型 Y、文字列&S、ストリング&P) { 場合(F [X] [Y] =! - 1)リターンF [X] [Y]。 もし(Y == M) 戻り F [X] [Y] = X == N。 BOOL first_match = X <N &&(S [X] == P [Y] || P [Y] == ' ' ); BOOL ANS; もし(Y + 1 <M && P [Y + 1 ] ==' * ' ){ ANS = DP(X、Y + 2、S、P)|| first_match && DP(X + 1 、Y、S、P)。 } 他 ANS = first_match && DP(X + 1、Y + 1 、S、P)。 リターン F [X] [Y] = ANS。 } }。