longest valid parentheses:
dp[i]表示到i为止合法的()长度
s[i] == ‘)‘ :
dp[i] = dp[i-2] + 2 ( s[i]==‘(‘ )
dp[i] = dp[i-1] + 2 + dp[i-dp[i-1]-2] ( s[i-1] == ‘)‘ && s[i-1-dp[i-1]] == ‘(‘ )
注意判断数组下标值是否存在
72. Edit Distance
将word1转换成word2:
三种操作:插入/删除/替换 一个字符
dp[i][j]表示word1 [0, i),word2 [0, j) 子串转换成功时的最少转换次数
初始化: dp[0][j]=j 插入操作,dp[i][0]=i 删除操作
word1[i-1]==word2[j-1]: dp[i][j] = dp[i-1][j-1]
word1[i-1]!=word2[j-1]: dp[i][j] = min(dp[i-1][j-1], min(dp[i][j-1], dp[i-1][j])) + 1;
对应三种操作:替换 dp[i-1][j-1] + 1, 删除(word1[i-1]) dp[i-1][j] + 1,
插入(word1[i-1]后插入word2[j-1]才两个子串相同 <=> 删除word2[j-1]使得两个子串相同) dp[i][j-1] + 1
原文地址:https://www.cnblogs.com/demian/p/11261378.html
时间: 2024-10-06 18:20:22