【牛客网华为机试】HJ65 查找两个字符串a,b中的最长公共子串

题目

描述

查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。

注:子串的定义:将一个字符串删去前缀和后缀(也可以不删)形成的字符串。请和“子序列”的概念分开!

本题含有多组输入数据!

输入描述:

输入两个字符串

输出描述:

返回重复出现的字符

示例1

输入:

abcdefghijklmnop
abcsafjklmnopqrstuvw

输出:

jklmnop

解题思路

(1)定义str1为最短字符串,str2为最长字符串

(2)遍历短字符串str1的每个字符,如果该字符存在于str2中,则i+1增加下一个字符继续判断

(3)i-n定位第1位字符的位置,i为最后1位字符出现的位置,s记录第一次出现的最长的公共子串

代码

while True:
    try:
        str1=input()
        str2=input()
        n = 0
        s = ''
        if len(str1

你可能感兴趣的:(牛客网刷题,华为,算法,python,数据结构,牛客网)