计算两个字符串的最大公共字串的长度,字符不区分大小写
【计算两个字符串的最大公共字串的长度,字符不区分大小写】题目:计算两个字符串的最大公共字串的长度,字符不区分大小写
输入
asdfas werasdfaswer
输出
6
分析:
方法(1):动态规划
int main()
{
int max = 0;
//max初值.
string str1, str2;
while (cin >> str1 >> str2)
{
int len1 = str1.size();
int len2 = str2.size();
int max = 0;
//所有值初始化为0
vector> dp(len1, vector(len2, 0));
//计算dp
for (int i = 0;
i < len1;
i++)
{
for (int j = 0;
j < len2;
j++)
{
//如果当前结尾的字符相等,则在dp[i-1][j-1]的基础上加1
if ((str1[i] == str2[j]) || (str1[i] + 32-'a') % 32 == (str2[j]+32-'a')%32)
{
if (i >= 1 && j >= 1)
dp[i][j] = dp[i - 1][j - 1] + 1;
else
//dp[i][0] or dp[0][j]
dp[i][j] = 1;
}
//更新最大值
if (dp[i][j] > max)
max = dp[i][j];
}
}
cout << max << endl;
}
return 0;
system("pause");
}
方法(2):拿着较短的串去匹配较长的串,长度分别为较短的串,较短的串减1...,一旦匹配上,就是最长的串,因为是从较短串最长长度开始的。
推荐阅读
- 一起来学习C语言的字符串转换函数
- 刘婵为何不娶关羽的女儿为妻子,而为何要娶张飞的两个女儿
- 使用协程爬取网页,计算网页数据大小
- 说睡
- ACSL|ACSL 美国计算机科学联赛 2016-2017 R4 摩天大楼-Skyscraper 题解
- 字符串拼接成段落,换行符(\n)如何只执行n-1次
- C语言的版本比较
- 有人与我谈格局
- 首屏时间,你说你优化了,那你倒是计算出给给我看啊!
- ||11|2019年9月9日