首页 > 试题广场 >

最大公共子串

[编程题]最大公共子串
  • 热度指数:4089 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给定两个字符串,请编写代码,输出最长公共子串(Longest Common Substring),是指两个字符串中的最长的公共子串,要求子串一定是连续。

数据范围:输入的两个字符串长度满足

输入描述:
文本格式,2个非空字符串(字母数字组成),2个字符串以","英文逗号分割。


输出描述:
整形,为匹配到的最长子串长度
示例1

输入

bab,caba

输出

2
package main

import (
    "fmt"
    "strings"
)

func main() {
    var s string
    fmt.Scan(&s)
    ss:=strings.Split(s,",")
    m,n:=len(ss[0]),len(ss[1])
    mat:=make([][]int,m+1)
    for i,_:=range mat{
        mat[i]=make([]int,n+1)
    }
    max:=0
    for i:=0;i<m;i++{
        for j:=0;j<n;j++{
            if ss[0][i]==ss[1][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-19 08:04:40 回复(0)