不太明白这个嵌套循环的逻辑不能修改

2024-04-27 03:19:41 发布

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

我在寻找以前回答过的关于在数组中查找重复子字符串的问题,遇到了https://cs.stackexchange.com/questions/79182/im-looking-for-an-algorithm-to-find-unknown-patterns-in-a-string。它做的正是我想要的,除了它分析单个字符串(并找到单个字符的重复),而我想分析一个数组(整数,有些超过9)。我无法按原样使用代码来实现这一点,因为例如“10”将被理解为“1”和“0”。你知道吗

所以我想分析[A,B,A,C…],而不是“abababa”。更重要的是,我最终希望使用整数[1,4,3,1,4…]

我尝试过修改代码,但是我不认为我完全理解嵌套循环的逻辑。有人能帮忙吗?你知道吗


Tags: 字符串代码httpscomanfor整数数组
1条回答
网友
1楼 · 发布于 2024-04-27 03:19:41

我一直在做一些关于原始问题的工作,我仍然不理解外循环的原因,但是我已经成功地模仿了原始的引用脚本(对于数组而不是字符串)。你知道吗

我想把它贴出来,以防别人用上。我相信这不是最有效的方法,但似乎很管用。如果有人看到上面有洞,请务必告知:

def countSubs(total, sub):
    totalCount = 0

    for i in range(len(total) - len(sub) + 1):
        testCount = 0

        for j in range(len(sub)):
            if sub[j] == total[i + j]:
                testCount += 1

        if testCount == len(sub):
            totalCount += 1

    return totalCount

minLength = 3
minCount = 2

test = [1,2,1,3,2,-1,2,-1,2,4,2,4,2,5,2,5,2,5,6,7,-1,7,-1,8,7,6,-1,9,-1,9,8,7,10]
rectDict = {}

for sublen in range(minLength, int(len(test)/minCount)):

    for i in range(0, len(test) - sublen):
        sub = test[i:i + sublen]
        cnt = countSubs(test, sub)

        #not necessary to concatenate with commas, but for visual legibility
        subText = ''.join(str(e) + ',' for e in sub)

        if cnt >= minCount and subText not in recDict:
            recDict[subText[:-1]] = cnt

print(rectDict)

相关问题 更多 >