您的位置:首页 > 其它

【华为OJ】公共字符字串计算

2016-09-03 10:50 281 查看
描述:计算两个字符串的最大公共字串的长度,字符不区分大小写

输入:两个字符串

输出:最长公共子串的长度

例:输入:asdfas werasdfaswe

        输出:6

#include<iostream>
#include<algorithm>
#include<string>

using namespace std;

int main()
{
int length1,length2,count=0;
string s1, s2,s;
cin >> s1>>s2;
transform(s1.begin(), s1.end(), s1.begin(), ::toupper);
transform(s2.begin(), s2.end(), s2.begin(), ::toupper);
length1 = s1.size();
length2 = s2.size();
for (int i = 0;i < length1;i++)
{
for (int j = length1 - i;j > 0;j--)
{
s = s1.substr(i, j);
if (s2.find(s) != s2.npos)
{
if(j>count)
count=j;
break;
}
}
}
cout << count;
return 0;
}

学到了transform函数,头文件需要包含algorithm.h。另外就是字符子串函数substr(开始的位置,长度)以及find(字符串)函数,find返回值是字符串所在位置,如果找不到,就等于str.npos.
想要再强化下string类型变量的处理,可以看收藏的那篇关于string类型的详细用法,原po写得很好!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: