擅长:python、mysql、java
<p>字符串长度的GCD对您没有帮助</p>
<p>如果<code>len(s)</code>是<code>len(t)</code>和<code>s == t * (len(s)//len(t))</code>的倍数,则字符串<code>t</code>将字符串<code>s</code>除以</p>
<p>至于求<code>t</code>最小除数的长度,经典的技巧是<code>(t+t).index(t, 1)</code>:在<code>t+t</code>中求<code>t</code>的第一个非零索引。我在这里使用了内置的<code>index</code>方法,但是根据执行此操作的原因以及所需的运行时属性,KMP字符串搜索可能是更好的选择。在Python中手动实现KMP将有巨大的常数因子开销,但它在最坏情况下的运行时将比<code>index</code>好得多</p>
<p>就字符串搜索而言,KMP实现起来并不特别困难。如果不将任务委托给库例程或牺牲渐进复杂性属性(或两者兼而有之),您将不会得到任何明显“更简单”的结果</p>
<p>如果您想要避免搜索表并保持渐进复杂性保证,可以使用类似<a href="https://en.wikipedia.org/wiki/Two-way_string-matching_algorithm" rel="nofollow noreferrer">two-way string matching</a>的东西,但它不会比KMP更容易实现</p>