首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在其他python 3中找到与最后n个字符串匹配的第一个n个字符串之间的重叠?

如何在其他python 3中找到与最后n个字符串匹配的第一个n个字符串之间的重叠?
EN

Stack Overflow用户
提问于 2020-03-13 16:34:36
回答 1查看 27关注 0票数 0

假设我有两个字符串:

代码语言:javascript
复制
a = 'stackoverflow'
b =  'mathisgoodstackover'

我试图从a的开头找到与b结尾相匹配的最大重叠部分。

代码语言:javascript
复制
c= 'stackover'
d = 'stackoverf'

c是最优解。d不是,因为b没有以stackoverf结尾。

我试着用蛮力,但不知道怎么写循环。有有效的算法吗?

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-13 16:53:46

您可以使用内置函数max和列表理解:

代码语言:javascript
复制
max([a[:i] for i in range(1,len(a) + 1) if b.endswith(a[:i])], key=len)

产出:

代码语言:javascript
复制
'stackover'

也适用于特殊情况:

代码语言:javascript
复制
a = 'ssss'
b =  'mathisgoodssssss'
max([a[:i] for i in range(1,len(a) + 1) if a[:i] == b[-i:]], key=len)

外:

代码语言:javascript
复制
'ssss'

或者按照@ShadowRanger的建议,您可以从尽可能大的i开始,然后使用带有生成器表达式下一首内置函数进行收缩。

代码语言:javascript
复制
next((a[:i] for i in range(len(a), 0,-1) if b.endswith(a[:i])), '')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60674133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档