私はleetcode.comのコンテスト52を行いましたが、私は解決策を理解することができませんでした。リピート文字列の一致
2つの文字列AとBが与えられた場合、Aが繰り返される必要がある最小回数を見つけ、Bがその部分文字列であるようにします。そのような解決策がない場合は、-1を返します。 A = "ABCD" とB =付き例えば
「(abcdabcdabcd 『)、Bはそれの>サブストリングであるcdabcdab
戻り3、三回繰り返してからである。』と、BではありませんAのサブストリングが2回 ( "たとえばABCDABCD")を繰り返し
溶液である:。
def repeatedStringMatch(self, A, B):
"""
:type A: str
:type B: str
:rtype: int
"""
times = int(math.ceil(float(len(B))/len(A)))
for i in range(2):
if B in (A * (times + i)):
return times + i
return -1
共同研究者のいずれかから、説明は以下のとおりであった:
Aは少なくとも> B(またはもう1つ)以上の長さになるように十分な時間を繰り返さなければならないため、理論的な下限>は長さB /長さA.
xを理論上の下限とすると、ceil(len(B)/ len(A))です。
答えNのみxまたはX + 1
することができ、私は理由を理解していないnは、誰かが助けることができるだけで、xまたはX + 1になることができますか?