我在编码挑战中被问到这个问题,但我的解决方案通过了 8/14 测试用例,无法 100% 解决。我需要理解这个问题背后的逻辑。我的方法是找出连接 0 或n
次是否可以t
s.
如果是这样,我返回 t 的最长重复子字符串。
给定字符串
s
和字符串t
,找到最小字符串的长度x
使得如果x
连接任意次数,我们得到s
和t
。如果不可能,则返回 -1;
示例 1:
s = bcdbcdbcd
t = bcdbcd
如果字符串t
连接两次,则结果bcdbcdbcdbcd
>s
sos
不能被t
整除。返回 -1
示例 2:
s = bcdbcdbcdbcd
t = bcdbcd
如果字符串t
连接两次,则结果bcdbcdbcdbcd
=s
,因此s
可被t
整除。可以连接以获得s
和t
的最小字符串x
是bcd
。返回其长度 3。
例3:
s = lrbb
t = lrbb
如果字符串lrbb
连接一次,我们得到字符串s
和字符串t
。返回其长度 4。
例4:
s = rbrb
t = rbrb
如果字符串rb
连接两次,我们会得到字符串s
和字符串t
。返回其长度 2。
正如问题所说,x不必与t相同。 尝试 s 的最短重复子字符串,看看它是否除以 t。