<p>此解决方案从可能长度最长的子字符串开始。如果对于某个长度,不存在该长度的匹配子字符串,则它将移动到下一个较低的长度。这样,它可以在第一场成功的比赛中停止</p>
<pre><code>s_1 = "yamxxopd"
s_2 = "yndfyamxx"
l_1, l_2 = len(s_1), len(s_2)
found = False
sub_length = l_1 # Let's start with the longest possible sub-string
while (not found) and sub_length: # Loop, over decreasing lengths of sub-string
for start in range(l_1 - sub_length + 1): # Loop, over all start-positions of sub-string
sub_str = s_1[start:(start+sub_length)] # Get the sub-string at that start-position
if sub_str in s_2: # If found a match for the sub-string, in s_2
found = True # Stop trying with smaller lengths of sub-string
break # Stop trying with this length of sub-string
else: # If no matches found for this length of sub-string
sub_length -= 1 # Let's try a smaller length for the sub-strings
print (f"Answer is {sub_length}" if found else "No common sub-string")
</code></pre>
<p><strong>输出:</strong></p>
<blockquote>
<p>Answer is 5</p>
</blockquote>