题目
描述
题目标题:
计算两个字符串的最大公共字串的长度,字符不区分大小写
输入
输入两个字符串
输出
输出一个整数
样例输入
asdfas werasdfaswer
样例输出
6
思路
暴力求解
此题用cin即可
代码
#include <iostream>
#include <string>
using namespace std;
int Maxsubstr(string a,string b)
{
unsigned int start1,start2;
int count=0,Max=0;
for(unsigned int i=0; a[i]!='\0'; i++)
{
for(unsigned int j=0; b[j]!='\0'; j++)
{
start1=i;
start2=j;
while(a[start1]==b[start2] && start1<a.length() && start2<b.length())
{
start1++;
start2++;
count++;
}
if(count>Max)
{
Max=count;
}
count=0;
}
}
return Max;
}
int main()
{
string str1,str2;
cin>>str1;
cin>>str2;
//不区分大小写
for (unsigned int i=0; i<str1.length(); i++)
{
str1[i]=tolower(str1[i]);
}
for (unsigned int i=0; i<str2.length(); i++)
{
str2[i]=tolower(str2[i]);
}
cout<<Maxsubstr(str1,str2)<<endl;
}
题目
描述
查找两个字符串a,b中的最长公共子串。
详细描述:
查找两个字符串a,b中的最长公共子串。
输入
输入两个字符串
输出
返回重复出现的字符
样例输入
abcdefghijklmnop
abcsafjklmnopqrstuvw
样例输出
jklmnop
思路
暴力求解
代码
#include <iostream>
#include <string>
using namespace std;
int Maxsubstr(string a,string b,string *&s)
{
unsigned int start,start1,start2;
int count=0,Max=0;
for(unsigned int i=0; a[i]!='\0'; i++)
{
for(unsigned int j=0; b[j]!='\0'; j++)
{
start1=i;
start2=j;
while(a[start1]==b[start2] && start1<a.length() && start2<b.length())
{
start1++;
start2++;
count++;
}
if(count>Max)
{
start = i;
Max = count;
}
count=