找到最小的字符串 x,如果重复 0 或 n 次,可以产生两个给定的字符串



我在编码挑战中被问到这个问题,但我的解决方案通过了 8/14 测试用例,无法 100% 解决。我需要理解这个问题背后的逻辑。我的方法是找出连接 0 或n次是否可以ts.如果是这样,我返回 t 的最长重复子字符串。

给定字符串s和字符串t,找到最小字符串的长度x使得如果x连接任意次数,我们得到st。如果不可能,则返回 -1;

示例 1:

s = bcdbcdbcd
t = bcdbcd

如果字符串t连接两次,则结果bcdbcdbcdbcd>ssos不能被t整除。返回 -1

示例 2:

s = bcdbcdbcdbcd
t = bcdbcd

如果字符串t连接两次,则结果bcdbcdbcdbcd=s,因此s可被t整除。可以连接以获得st的最小字符串xbcd。返回其长度 3。

例3:

s = lrbb
t = lrbb

如果字符串lrbb连接一次,我们得到字符串s和字符串t。返回其长度 4。

例4:

s = rbrb
t = rbrb

如果字符串rb连接两次,我们会得到字符串s和字符串t。返回其长度 2。

正如问题所说,x不必与t相同。 尝试 s 的最短重复子字符串,看看它是否除以 t。

最新更新