gpt4 book ai didi

java - 我应该如何找到重复的单词序列

转载 作者:搜寻专家 更新时间:2023-11-01 02:54:29 24 4
gpt4 key购买 nike

我需要检测多个柱状数据 block 的存在,仅给出它们的标题。除了标题词之外,关于数据的其他信息一无所知,标题词对于每组数据都是不同的。

重要的是,事先不知道每个 block 中有多少单词,因此也不知道有多少 block 。

同样重要的是,单词列表总是相对较短 - 少于 20 个。

因此,给定一个标题词列表或数组,例如:

Opt
Object
Type
Opt
Object
Type
Opt
Object
Type

确定它完全由重复序列组成的最有效处理方法是什么:

Opt
Object
Type

它必须是精确匹配,所以我的第一个想法是搜索 [1+] 寻找与 [0] 的匹配项,称它们为索引 n,m,... 然后如果它们是等距的则检查 [1] == [n+1] == [m+1], [2] == [n+2] == [m+2] 等

编辑:它必须适用于一些单词本身在一个 block 中重复的单词集,所以

Opt
Opt
Object
Opt
Opt
Object

是一组2

Opt
Opt
Object

最佳答案

如果列表由 x 个重复组组成,并且每个组包含 n 个元素...

我们知道至少有 1 个组,所以我们将看看是否有 2 个重复组,通过比较列表的前半部分和后半部分进行测试。

1) 如果以上为真,我们知道解是 2 的因数

2) 如果以上为假,我们移动到下一个可被单词总数整除的最大素数...

在每一步中,我们都会检查列表之间的相等性,如果我们找到它,那么我们就知道我们有一个包含该因素的解决方案。

我们想要返回一个单词列表,其中我们发现子列表之间相等的第一个质数的最大因数。

所以我们在知道所有子列表都相等的情况下将上述公式应用于子列表...因此最好递归地解决该解决方案。那就是我们只需要孤立地考虑当前的子列表。


如果加载一个简短的素数表,该解决方案将非常有效......在此之后,将有必要计算它们,但即使只采用几十个素数的列表,该列表也必须是非平凡的考虑在内。

关于java - 我应该如何找到重复的单词序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4413764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com