对于给定的输入字符串input = "abbbbdeeefffddddb"
,我想将其解析为
result = ['a', 'b', 'bb', 'bd', 'd', 'e', 'ee', 'f', 'ff', 'dd', 'db']
这种解析背后的逻辑如下。如果第一次遇到子字符串,它将被解析掉。在子串的每个后续出现中,它都与下面的字母合并,然后被解析掉。在
举例说明:
这一直持续到最后。在
我试图通过以下代码实现这一点:
input = "abbbbdeeefffddddb"
comparator = []
def parse(string):
for pointer in range(len(string)-1):
if string[pointer] not in comparator:
comparator.append(string[pointer])
else:
substring = string[pointer] + string[pointer+1]
comparator.append(substring)
print comparator
parse(input)
结果是:['a', 'b', 'bb', 'bb', 'bd', 'd', 'e', 'ee', 'ef', 'f', 'ff', 'fd', 'dd', 'dd', 'dd', 'db']
这是错误的。我这里缺少一个关键部分,但我不知道如何实现它,也许它需要一些递归函数,或者我应该在某处使用break
或{
不要只为给定的输入提供解决方案。这里给出的输入只是为了举例说明。解决方案必须是通用的,以适用于不同的输入。在
这是原始算法,第6页:paper
你似乎忘记了跳过bigrams中的解析字母:
或者稍微重写
^{pr2}$使用set有什么问题?在
set(comparator)
如果订单不重要。在
这是你想要的吗?在
它并没有给出您的示例输出,但我想知道这是否不是您真正想要的。如果这不是你需要的,你能更具体地说明你需要遵守什么规则吗?在
相关问题 更多 >
编程相关推荐