首页 > 试题广场 >

最长公共子串

[编程题]最长公共子串
  • 热度指数:4065 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解

有两个字符串(可能包含空格),请找出其中最长的公共连续子串,输出其长度。


输入描述:
给定两行字符串

长度在1000以内


输出描述:
输出这两个字符串的最长公共连续子串的长度
示例1

输入

abcde
bcd

输出

3
package main

import (
    "fmt"
    "os"
    "bufio"
)

var in=bufio.NewReader(os.Stdin)

func main() {
    s1,_:=in.ReadString('\n')
    s2,_:=in.ReadString('\n')
    mat:=make([][]int,len(s1)+1)
    for i,_:=range mat{
        mat[i]=make([]int,len(s2)+1)
    }
    max:=0
    for i:=0;i<len(s1);i++{
        for j:=0;j<len(s2);j++{
            if s1[i]==s2[j]{
                mat[i+1][j+1]=mat[i][j]+1
                if mat[i+1][j+1]>max{
                    max=mat[i+1][j+1]
                }
            }
        }
    }
    fmt.Print(max)
}

发表于 2023-03-20 23:59:11 回复(0)