刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

找公共子串

题目描述:

分行输入两个字符串(2<=字符串长度<=100),找出两个字符串中最大的公共子串,然后将公共子串及公共子串的长度分行输出

例如:输入两个宇串为abcdab和baabcd,其最大的公共子串为"abcd",子串长度为4.

输入描述

第一行输入一个字符串

第二行输入一个字符串

输出描述

第一行输出最大公共子串

第二行输出最大公共子串长度


样例输入

abcdab
baabcd

样例输出

abcd
4

使用微信搜索喵呜刷题,轻松应对考试!

答案:

br />输入:abcdabbaabcd输出:abcd4

解析:

【喵呜刷题小喵解析】
这个题目要求找出两个字符串中最大的公共子串,并将公共子串及其长度输出。

首先,我们需要理解什么是公共子串。公共子串是指两个字符串中都存在的子串。

对于这个问题,我们可以使用动态规划的方法来解决。我们可以创建一个二维数组dp,其中dp[i][j]表示第一个字符串的前i个字符和第二个字符串的前j个字符的最大公共子串长度。如果s1的第i个字符和s2的第j个字符相等,那么dp[i][j] = dp[i-1][j-1] + 1;否则,dp[i][j] = 0。

接着,我们需要找到最大公共子串。我们可以从dp数组的右下角开始,如果dp[i][j] > 0,那么s1的第i个字符和s2的第j个字符就是最大公共子串的一部分。我们可以继续向前查找,直到找到一个位置(i', j'),使得dp[i'][j'] = 0,那么s1的第i'+1个字符到第i个字符和s2的第j'+1个字符到第j个字符就是最大公共子串。

在这个例子中,第一个字符串是"abcdab",第二个字符串是"baabcd"。根据动态规划的方法,我们可以计算出dp数组:


```
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 1 0
0 0 0 0 1 0
```
从dp数组的右下角开始,我们可以找到最大公共子串"abcd",其长度为4。
创作类型:
原创

本文链接:找公共子串 题目描述: 分行输入两个字符串(2<=字符串长度<=100),找出两个字符串中最大的公共

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share