31 lines
609 B
Go
31 lines
609 B
Go
package q712
|
|
|
|
func minimumDeleteSum(s1 string, s2 string) int {
|
|
mds := make([][]int, len(s1)+1)
|
|
for i := range mds {
|
|
mds[i] = make([]int, len(s2)+1)
|
|
}
|
|
|
|
for i := range len(s1) {
|
|
mds[i+1][0] = mds[i][0] + int(s1[i])
|
|
}
|
|
for i := range len(s2) {
|
|
mds[0][i+1] = mds[0][i] + int(s2[i])
|
|
}
|
|
|
|
for i1 := 1; i1 <= len(s1); i1++ {
|
|
for i2 := 1; i2 <= len(s2); i2++ {
|
|
if s1[i1-1] == s2[i2-1] {
|
|
mds[i1][i2] = mds[i1-1][i2-1]
|
|
} else {
|
|
mds[i1][i2] = min(
|
|
mds[i1-1][i2]+int(s1[i1-1]),
|
|
mds[i1][i2-1]+int(s2[i2-1]),
|
|
)
|
|
}
|
|
}
|
|
}
|
|
return mds[len(s1)][len(s2)]
|
|
}
|
|
|
|
var _ = minimumDeleteSum
|