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