leetcode10 爲什麼p[j-1] == '*'的時候,不能用遞推公式dp[i][j] = dp[i][j-1] || dp[i][j-2] || dp[i-1][j]

因爲可能會出現以下情況:

"mississippi"
"mis*is*p*."

mississ

mis*is*

符合

mississi

mis*is* 

符合

所以,遞推公式是

int dp[slen+1][plen+1]
if (p[j-1] == '.' || s[i-1] == p[j-1]) dp[i][j] = dp[i-1][j-1];
if (p[j-1] == '*')
{
    dp[i][j] = dp[i][j-1] || dp[i][j-2];
    if (p[j-2] == '.' || s[i-1] == p[j-2]) dp[i][j] = dp[i][j] || dp[i-1][j];
}

相比較而言,44題就是真正的起飛了

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章