使三个字符串相等

给你三个字符串 s1、s2 和 s3。 你可以根据需要对这三个字符串执行以下操作 任意次数 。
在每次操作中,你可以选择其中一个长度至少为 2 的字符串 并删除其 最右位置上 的字符。
如果存在某种方法能够使这三个字符串相等,请返回使它们相等所需的 最小 操作次数;否则,返回 -1。

  • 输入:s1 = “abc”,s2 = “abb”,s3 = “ab”
    输出:2
    解释:对 s1 和 s2 进行一次操作后,可以得到三个相等的字符串。
    可以证明,不可能用少于两次操作使它们相等。

  • 输入:s1 = “dac”,s2 = “bac”,s3 = “cac”
    输出:-1
    解释:因为 s1 和 s2 的最左位置上的字母不相等,所以无论进行多少次操作,它们都不可能相等。因此答案是 -1 。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var findMinimumOperations = function(s1, s2, s3) {
if (s1[0] != s2[0] || s1[0] != s3[0] || s2[0] != s3[0]) {
return -1
}
const n1 = s1.length, n2 = s2.length, n3 = s3.length
let minN = Math.min(n1, n2, n3)
let c = 0
for (let i = 0; i < minN; i++) {
if (s1[i] == s2[i] && s2[i] == s3[i]) {
c++
} else {
break
}
}
return n1 + n2 + n3 - 3 * c
};