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