在 S1 中找到 S2 的最长公共起始子串
Find the Longest Common starting substring of S2 in S1
我正在解决一个问题。我在S1部分解决了S2的Longest Common starting substring但是时间复杂度很高
在下面的代码中,我必须在 s[i].
中找到 str3 的最长公共起始子串
在下面的代码中,我也使用了 KMP 算法而不是查找函数,但我再次面临高时间复杂度。
string str3=abstring1(c,1,2,3);
while(1)
{
size_t found = s[i].find(str3);
if(str3.length()==0)
break;
if (found != string::npos)
{
str1=str1+str3;
break;
}
else
{
str3.pop_back();
}
}
示例:
S1=balling S2=baller
ans=球
S1=balling S2=uolling
ans=
我们必须在 S1
中找到 S2 的公共起始子串
你能帮忙写c++吗
我找到了 Similar Post 但我无法用 C++ 做我自己。
这是一种散发出淡淡的黑客香气的解决方案。
假设
s1 = 'snowballing'
s2 = 'baller'
然后形成字符串
s = s2 + '|' + s1
#=> 'baller|snowballing'
竖线 ('|'
) 可以是不在任一字符串中的任何字符。 (如果有疑问,可以使用 "\x00"
。)
然后我们可以将 s
与正则表达式
进行匹配
^(.*)(?=.*\|.*)
这将匹配 s2
中出现在 s1
中的最长起始字符串,在本例中为 'ball'
.
正则表达式可以分解如下
^ # match beginning of string
( # begin capture group 1
.* # match zero or more characters, as many as possible
) # end capture group 1
(?= # begin a positive lookahead
.* # match zero or more characters, as many as possible
\| # match '|'
.* # match zero or more characters, as many as possible
# match the contents of capture group 1
) # end positive lookahead
我正在解决一个问题。我在S1部分解决了S2的Longest Common starting substring但是时间复杂度很高
在下面的代码中,我必须在 s[i].
中找到 str3 的最长公共起始子串 在下面的代码中,我也使用了 KMP 算法而不是查找函数,但我再次面临高时间复杂度。
string str3=abstring1(c,1,2,3);
while(1)
{
size_t found = s[i].find(str3);
if(str3.length()==0)
break;
if (found != string::npos)
{
str1=str1+str3;
break;
}
else
{
str3.pop_back();
}
}
示例:
S1=balling S2=baller
ans=球
S1=balling S2=uolling
ans=
我们必须在 S1
中找到 S2 的公共起始子串
你能帮忙写c++吗
我找到了 Similar Post 但我无法用 C++ 做我自己。
这是一种散发出淡淡的黑客香气的解决方案。
假设
s1 = 'snowballing'
s2 = 'baller'
然后形成字符串
s = s2 + '|' + s1
#=> 'baller|snowballing'
竖线 ('|'
) 可以是不在任一字符串中的任何字符。 (如果有疑问,可以使用 "\x00"
。)
然后我们可以将 s
与正则表达式
^(.*)(?=.*\|.*)
这将匹配 s2
中出现在 s1
中的最长起始字符串,在本例中为 'ball'
.
正则表达式可以分解如下
^ # match beginning of string
( # begin capture group 1
.* # match zero or more characters, as many as possible
) # end capture group 1
(?= # begin a positive lookahead
.* # match zero or more characters, as many as possible
\| # match '|'
.* # match zero or more characters, as many as possible
# match the contents of capture group 1
) # end positive lookahead