开发者社区> 问答> 正文

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

假设我有两个字符串:

a = 'stackoverflow'
b =  'mathisgoodstackover'

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

c= 'stackover'
d = 'stackoverf'

c是最佳解决方案。d不是,因为b不以stackoverf结尾。

我尝试使用蛮力,但不确定如何编写循环。任何有效的算法?

谢谢,

问题来源:stackoverflow

展开
收起
is大龙 2020-03-23 20:58:46 298 0
1 条回答
写回答
取消 提交回答
  • 您可以使用内置函数max进行列表理解:

    max([a[:i] for i in range(1,len(a) + 1) if b.endswith(a[:i])], key=len)
    

    输出:

    'stackover'
    

    也适用于特殊情况:

    a = 'ssss'
    b =  'mathisgoodssssss'
    max([a[:i] for i in range(1,len(a) + 1) if a[:i] == b[-i:]], key=len)
    

    输出:

    'ssss'
    

    或按照@ShadowRanger的建议,您可以从“ i”开始尽可能大,然后使用带有生成器表达式的下一个内置函数来缩小

    next((a[:i] for i in range(len(a), 0,-1) if b.endswith(a[:i])), '')
    

    回答来源:stackoverflow

    2020-03-23 20:58:53
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载