gpt4 book ai didi

c++ - 关键字和比较词的重叠

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:27:52 25 4
gpt4 key购买 nike

如何编写给出以下结果的 if 语句:

关键字=脸

比较词(用户输入)= effac, acer

一些例子可以说明我的意思:

 Keyword: face
Match: effac
Overlap: 3 (fac)

Keyword: face
Match: acer
Overlap: 3 (ace)

Keyword: llama
Match: amazing
Overlap: 3 (ama)

Keyword: lame
Match: lament
Overlap: 4 (lame)

我想我需要使用 substr?或者只是一般来说,我能做些什么来弄清楚如何确定这两种情况的重叠?我已经准备好函数,我只需要弄清楚我需要在 if/else 语句中放入哪些条件,以及 if/else 代码块的主体。

最佳答案

#include <string>

std::string longestCommonSubstr( std::string& s, std::string& in) {
size_t s_s = s.size();
size_t in_s = in.size();
if ( ( s_s == 0) || ( in_s == 0)) return std::string();
size_t common_s = std::min( s_s, in_s);
for ( size_t i = common_s; i > 0; i--) {
size_t pos_beg = 0;
size_t pos_end = i;
while ( pos_end < s_s + 1) {
std::string searched = s.substr( pos_beg, pos_end);
size_t found = in.find( searched);
if ( found != std::string::npos) return searched;
++pos_beg;
++pos_end;
}
}
return std::string();
}

用法:

int main(int argc, char** argv) {

std::string me( "face");
std::string ymey( "effac");
std::string res = longestCommonSubstr( me, ymey); // res is "fac"
if ( !res.empty()) {
// found
}
return 0;
}

关于c++ - 关键字和比较词的重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22276500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com