题解 | #编辑距离(二)#

编辑距离(二)

https://www.nowcoder.com/practice/05fed41805ae4394ab6607d0d745c8e4

package main

/**
 * min edit cost
 * @param str1 string字符串 the string
 * @param str2 string字符串 the string
 * @param ic int整型 insert cost
 * @param dc int整型 delete cost
 * @param rc int整型 replace cost
 * @return int整型
*/
func minEditCost(str1 string, str2 string, ic int, dc int, rc int) int {
	n := len(str1)
	m := len(str2)
	dp := make([][]int, n+1)
	for i := 0; i <= n; i++ {
		dp[i] = make([]int, m+1)
	}
	for i := 0; i <= n; i++ {
		for j := 0; j <= m; j++ {
			if i == 0 && j == 0 {
				dp[i][j] = 0
			} else if i > 0 && j == 0 {
				dp[i][j] = dp[i-1][j] + dc
			} else if i == 0 && j > 0 {
				dp[i][j] = dp[i][j-1] + ic
			} else {
				dp[i][j] = dp[i-1][j] + dc
				if dp[i][j-1] + ic < dp[i][j] {
					dp[i][j] = dp[i][j-1] + ic
				}
				val := dp[i-1][j-1]
				if str1[i-1] != str2[j-1] {
					 val += rc 
				}
				if val < dp[i][j] {
					dp[i][j] = val
				}
			}
		}
	}
	return dp[n][m]
	// write code here
}

全部评论

相关推荐

02-12 17:30
已编辑
字节跳动_实习生(实习员工)
要怎么办呢牛:我觉得大厂日常实习最大的意义就是给自己背书,一个好公司的实习就像一个好学历似的,能够给自己增加一个标签,让别人觉得你可以。(至于真正实习干了啥,这个感觉并不太重要)。当然一家之言,仅供参考。另外,楼主已经很强了,实习毕业双双拿下,已经领先好多好多人了,羡慕啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务