【华为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写得很好!
输入:两个字符串
输出:最长公共子串的长度
例:输入: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写得很好!
相关文章推荐
- 华为OJ——公共字串计算
- 华为机试:计算两个字符串的最大公共字串的长度,字符不区分大小写
- 华为oj 公共字串计算
- 华为OJ——公共字串计算
- 华为OJ 公共字串计算&&查找两个字符串a,b中的最长公共子串
- 华为oj 公共字串计算
- [华为oj]计算公共字串
- 华为OJ: 公共字串计算
- 华为OJ——公共字串计算
- [华为OJ--C++]002-计算字符个数
- 华为 oj 公共子串计算
- 华为OJ:计算字符个数
- 【华为OJ】计算字符个数
- 【华为oj】计算字符串中含有的不同字符的个数
- 华为OJ——计算字符个数
- 华为上机 公共字串计算
- 华为OJ: 公共字符串计算
- 华为OJ:计算字符个数
- 华为oj 计算字符个数
- 华为OJ 初级:计算字符个数