lc-go/solutions/7/q712/solution.go
2026-01-13 00:14:04 +09:00

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