题解 | #公共子串计算#
公共子串计算
https://www.nowcoder.com/practice/98dc82c094e043ccb7e0570e5342dd1b
解题思路:用较短的那个字符串做递归,始终保持第一个字符串是较短的那个方便程序编写,如果第一较长则把两个字符串互换。
然后判断最短字符串是不是只有一个字符串,且包含在长字符串内,是的话则输出1
如果大于1,则进行递归:
让最大公共子串的首字母,是字符串a的每一个,a[i],让假设的公共子串的末尾从字符串a的末尾开始,逐渐向左位移,直到找到b的子串为止,这样就能得到首字母为a[i]的最大子串,赋值给res,如果下一个a[i]字符做首字母求的最大子串的长度大于当前的res长度,则将新的子串赋值给res。
a =raw_input() b =raw_input() if len(a)>len(b): a,b=b,a if len(a) ==1 and a in b: print 1 res ='' for i in range(len(a)): j=len(a) while j>=i: if a[i:j] in b: if len(a[i:j])>len(res): res = a[i:j] break j-=1 print len(res)

