栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

交织两个字符串的所有可能方法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

交织两个字符串的所有可能方法

想法

让您要交错的两个字符串为

s
t
。我们将使用递归生成所有可能的方式来交织这两个字符串。

如果在任何时间点我们已经对的第一个

i
字符
s
和的第一个
j
字符进行
t
了交织以创建某个字符串
res
,那么我们可以通过两种方式对它们进行交织以进行下一步:

  1. 追加
    i+1
    的个字符
    s
    res
  2. 追加
    j+1
    的个字符
    t
    res

我们继续进行递归,直到使用了两个字符串的所有字符,然后将结果存储在字符串列表中,

lis
如下面的代码所示。

编码

def interleave(s, t, res, i, j, lis):    if i == len(s) and j == len(t):        lis.append(res)        return    if i < len(s):        interleave(s, t, res + s[i], i + 1, j, lis)    if j < len(t):        interleave(s, t, res + t[j], i, j + 1, lis)l = []s = "ab"t = "cd"interleave(s, t, "", 0, 0, l)print l

输出量

['abcd', 'acbd', 'acdb', 'cabd', 'cadb', 'cdab']

由于我们从未两次生成相同的字符串,因此这种实现方式(至少渐近地)是高效的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/441216.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号