查找字符串中最长的子字符串
Find longest substring in a string
我想知道如何做到这一点:
string1= "cggt"
string2="ccgg"
包含string2
的最大子串string1
只有一个"c"(string1
必须有连续的string2
段,就像string1
是"ccgt"一样,那么返回应该是最大子串"cc")。
更多示例:
string1:"EggAndApple"
string2:"AppleEggAnd"
我想在包含string2
的string1
中找到最大子串应该是"Apple"(必须以string2
开头)
但我下面的代码将给出"EggAnd"作为结果
我搜索了一些解决方案以返回结果maxsubstring是"cgg"。代码是
int findOverlap( std::string str1, std::string str2)
{
if(str1.empty() || str2.empty())
{
return 0;
}
int *curr = new int [str1.size()];
int *prev = new int [str1.size()];
int *swap = nullptr;
int maxSubstr = 0;
for(int i = 0; i<str2.size(); ++i)
{
for(int j = 0; j<str1.size(); ++j)
{
if(str1[j] != str2[i])
{
curr[j] = 0;
}
else
{
if(i == 0 )
{
curr[j] = 1;
}
else
{
curr[j] = 1 + prev[j-1];
}
if(maxSubstr < curr[j])
{
maxSubstr = curr[j];
}
}
}
swap=curr;
curr=prev;
prev=swap;
}
delete [] curr;
delete [] prev;
return maxSubstr;
}
如何修改此代码以满足我的要求,或者如何编写新的代码段来解决我的问题?
下面是我对您问题的修改,我没有编译和运行,但它应该可以工作。
char* str1 = "EggAndApple";
char* str2 = "AppleEggAnd";
int* maxSubStrLen = new int [strlen(str1)];
memset(maxSubStrLen, 0, sizeof(int) * strlen(str1));
// start index of max substring
int maxGlobalSubStrIdx = -1;
// length of max substring
int maxGlobalSubStrLen = 0;
for(int i = 0; i < strlen(str2); ++i)
{
for(int j = i; j < strlen(str1); ++j)
{
if(str1[j] != str2[i])
{
continue;
}
// str1[j] == str2[i]
{
// find substring started from (j - i) ?
if(maxSubStrLen[j - i] == i) {
maxSubStrLen[j - i]++;
if(maxGlobalSubStrLen < maxSubStrLen[j - i])
{
maxGlobalSubStrLen = maxSubStrLen[j - i];
maxGlobalSubStrIdx = j - i;
}
}
}
}
}
delete [] maxSubStrLen;
printf("maxGlobalSubStrLen:%d, maxGlobalSubStrIdx:%dn", maxGlobalSubStrLen, maxGlobalSubStrIdx);
相关文章:
- 使用正则表达式regex_search在字符串中查找字符串
- 按类型与字符串查找对象
- 使用C RTTI(内置)通过字符串查找功能指针
- 关于获取行和字符串查找函数的问题
- 字符串查找方法找不到第一字母
- C++ 字符串.查找()
- 遇到字符串::查找的问题
- 将一个数组作为子字符串查找到另一个数组中
- 字符串查找第一个非的 C++ 问题
- 如何将通配符与字符串::查找一起使用
- 字符串::查找问题 (C++)
- 性能标准::strstr vs. 标准::字符串::查找
- C++字符串::查找崩溃应用程序
- 使用字符串查找单词的正确方法是什么
- 如何在<string>没有 std::string 中介的情况下制作一个支持通过 C 字符串查找的集合?
- 使用C++根据行中的第一个字符串查找行(仅一个)
- Borland字符串::查找bug
- std::map如何通过字符串查找元素
- 字符串查找函数返回奇数
- 如何使用子字符串查找数字行的正确部分