最长公共子串_暴力解法(不会正解)

Posted oi-xyf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最长公共子串_暴力解法(不会正解)相关的知识,希望对你有一定的参考价值。

最长公共子串 lcs.cpp/.in/.out

计算两个字符串的最大公共子串(Longest Common Substring)的长度,字符不区分大小写,这里的最大公共子串要求的字串是连续的。

输入:

两行,每行一个字符串,字符串长度<=1000.

输出:

输出一个整数,表示公共子串的长度。

样例输入:

asdfas

werasdfaswer

样例输出:

6

下面上代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 char o[300],k[300];
 4 int main()
 5 {
 6 //    freopen("lcs.in","r",stdin);
 7 //    freopen("lcs.out","w",stdout);
 8     scanf("%s",&o);
 9     scanf("%s",&k);
10     int long_1=0,long_2=0;
11     while(o[long_1]!=)
12     {
13         long_1++;//数组长度(1)
14     }
15     while(k[long_2]!=)
16     {
17         long_2++;//数组长度(2)
18     }
19     int maxx=0;
20     for(int u=0;u<long_1;u++)//第一个数组的初始位置
21     {
22         for(int u2=0;u2<long_2;u2++)//第二个数组的初始位置
23         {
24             if(o[u]==k[u2])//如果初始位置处相同,就往后while循环找最长的相同长度
25             {
26                 int now_long=1;
27                 while(o[u+now_long]!=&&k[u2+now_long]!=&&(o[u+now_long]==k[u2+now_long]||o[u+now_long]+A-a==k[u2+now_long]||o[u+now_long]-A+a==k[u2+now_long]))//判断是否到行尾以及是否大小写
28                 {
29                     now_long++;//如果相同
30                 }
31                 maxx=max(maxx,now_long);//长度更新
32             }
33         }
34     } 
35     cout<<maxx;
36 }

 

以上是关于最长公共子串_暴力解法(不会正解)的主要内容,如果未能解决你的问题,请参考以下文章

[PHP]算法-最长公共子串的PHP实现

字符串----最长重复子串

leetcode0005 最长回文子串的暴力递归

POJ 3080 Blue Jeans 找最长公共子串(暴力模拟+KMP匹配)

[LCS] nwHJ65 查找两个字符串a,b中的最长公共子串(LCS+KMP+substr暴力)

[LCS] nwHJ65 查找两个字符串a,b中的最长公共子串(LCS+KMP+substr暴力)