python 遍历字符串一遍解法
查找两个字符串a,b中的最长公共子串
http://www.nowcoder.com/questionTerminal/181a1a71c7574266ad07f9739f791506
从较短的字符串从头到尾遍历一遍即可:设置一个初始最大公共子串长度 max_length = 0,当遍历到s1[i]时,若s1[i:i+max_length+1] in s2,则最大公共子串长度可增加1,继并续判断直至不满足条件时,i 增加 1,即遍历到 i+1的位置,以此类推。由于仅需要输出较短字符串中最早出现的最长公共子串,因此 max_length 遇到更大的满足条件时才需更新,若后续遍历没有再比当前得到的 max_length 更长的子串,则无需更新,因此从较短的字符串从头到尾遍历一遍即可。
while True:
try:
s1 = input().strip()
s2 = input().strip()
if len(s1) > len(s2):
s1,s2 = s2,s1
res = ''
max_length = 0
i = 0
while i + max_length < len(s1):
while i+max_length < len(s1) and s1[i:i+max_length+1] in s2:
#这里一定需要再判别一下i+max_length < len(s1),否则会出现无限循环的情况,测试用例不全所以才没有报错
res = s1[i:i+max_length+1]
max_length += 1
i += 1
print(res)
except:
break
查看29道真题和解析
小天才公司福利 1165人发布
