如何递归地查找条形码中的数字或“xx”对(python)

2024-10-03 06:31:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是python。 我遇到了这个递归问题,我试图找出有多少对字符在一个字符串中是相同的。例如,'xx'将返回1,'xxx'也将返回1,因为这两个对不允许重叠aabbb'将返回2。在

我完全卡住了。我想把这个单词分成两个长度的字符串,然后像那样在字符串中递归,但是像“aaa”这样的情况会导致不正确的输出。在

谢谢。在


Tags: 字符串情况字符单词xxxxxaaaaabbb
3条回答

不知道为什么要递归执行此操作。如果希望避免使用regex,仍然可以从左到右扫描字符串。例如,使用itertools.groupby

>>> from itertools import groupby
>>> s = 'aabbb'
>>> sum(sum(1 for i in g)//2 for k,g in groupby(s))
2
>>> s = 'yyourr ssstringg'
>>> sum(sum(1 for i in g)//2 for k,g in groupby(s))
4

sum(1 for i in g)用于查找组的长度。如果组不是很长,可以使用len(list(g))

我会以2分来评价它

例如,"sskkkj"将被视为两组字符字符串:

"ss", "kk", "kj" # from 0 index
"sk", "kk"  # offset by 1 

同时查看两组,如果其中一组有一对,则只添加一组。在

您可以使用正则表达式:

import re

s = 'yyourr ssstringg'
print len(re.findall(r'(\w)\1', s))

[OUTPUT]
4

这也解决了您的“不允许重叠”问题,正如您在上面的示例中看到的,它打印的是4而不是5。在

对于递归方法,可以按以下方式执行:

^{pr2}$

如果没有for循环:

^{3}$

相关问题 更多 >