您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 删除连续的字母重复项

5b51 2022/1/14 8:21:17 python 字数 2085 阅读 497 来源 www.jb51.cc/python

寻找一种快速的方法,当重复出现在彼此旁边时,将重复数限制为最大值2.例如:jeeeeeeeep => [ 'JEP', '吉普车']在python中寻找建议,但很高兴看到任何东西的例子 - 不难切换.谢谢你的帮助!编辑:英语连续没有任何(或许多)辅音(同一个字母)吗?让我们限制这一点,以便连续不重复辅音,连续两个元音编辑2:我很傻(嘿,这个词有两个辅音),只

概述

寻找一种快速方法,当重复出现在彼此旁边时,将重复数限制为最大值2.

例如:jeeeeeeeep => [ ‘JEP’,‘吉普车’]

python中寻找建议,但很高兴看到任何东西的例子 – 不难切换.

谢谢你的帮助!

编辑:英语连续没有任何(或许多)辅音(同一个字母)吗?让我们限制这一点,以便连续不重复辅音,连续两个元音

编辑2:我很傻(嘿,这个词有两个辅音),只是检查所有字母,限制彼此相邻的重复字母为两个.

from itertools import groupby

def find_dub_strs(mystring):
    grp = groupby(mystring)
    seq = [(k,len(list(g)) >= 2) for k,g in grp]
    allowed = ('aeIoUpt')
    return rec_dubz('',seq,allowed=allowed)

def rec_dubz(prev,allowed='aeIoU'):
    if not seq:
        return [prev]
    solutions = rec_dubz(prev + seq[0][0],seq[1:],allowed=allowed)
    if seq[0][0] in allowed and seq[0][1]:
        solutions += rec_dubz(prev + seq[0][0] * 2,allowed=allowed)
    return solutions

这实际上只是一种启发式修剪深度优先搜索到你可能的单词的“解决方案空间”.启发式是我们一次只允许一次重复,并且只有它是有效的可重复字母.你应该在最后得到2 ** n个单词,其中n是数字乘以你的字符串中重复的“允许”字符.

>>> find_dub_strs('jeeeeeep')
['jep','jeep']
>>> find_dub_strs('jeeeeeeppp')
['jep','jepp','jeep','jeepp']
>>> find_dub_strs('jeeeeeeppphhhht')
['jepht','jeppht','jeepht','jeeppht']

总结

以上是编程之家为你收集整理的python – 删除连续的字母重复项全部内容,希望文章能够帮你解决python – 删除连续的字母重复项所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶