1.题目描述
计算两个字符串的最大公共字串的长度,字符不区分大小写
输入描述: 输入两个字符串输出描述: 输出一个整数
2.思路解析
- 主函数里面将小写的全部转换成大写的
- 先遍历s1字符串,然后在s2中找第一个相同的字符
- 如果一直相等的话,那么就++,并且算出长度
- 这里index用于标记i值,判断相等的时候用
- 最后一个判断长的就赋值给count并返回
3.代码实现
#include <iostream>
#include <string>
using namespace std;
int getCommonStrLength(string s1, string s2)
{
// 最后返回的数字
int count = 0;
// 遍历s1
for(int i = 0; i < s1.size(); i++)
{
int j = 0;
int ret = 0;
// 找字符
while(j < s2.size())
{
// 用index标记s1,j来标记找到的第一个相同的字符
int index = i;
j = s2.find(s1[index], j);
while(s1[index] == s2[j] && index < s1.size())
{
// 如果相等的话,就全部++
index++;
j++;
ret++;
}
// 将大的赋值
if(ret > count)
count = ret;
// ret给成0,否则会影响之后的值
ret = 0;
}
}
// 返回
return count;
}
int main()
{
string s1;
string s2;
while(cin >> s1 >> s2)
{
// 小的在前
if(s1.size() > s2.size())
swap(s1, s2);
// 这里将小写转化为大写
for (int i = 0; i < s1.size(); i++) //大小写字母转换
{
if (s1[i] >= 'A'&&s1[i] <= 'Z')
s1[i] += 32;
}
for (int i = 0; i < s2.size(); i++)
{
if (s2[i] >= 'A'&&s2[i] <= 'Z')
s2[i] += 32;
}
// 打印
cout << getCommonStrLength(s1, s2) << endl;
}
return 0;
}