Java 给定两个字符串,检查它们是否';如果是k-equal,则长度为k的每个子字符串都出现在这两个字符串上,并且必须为max

Java 给定两个字符串,检查它们是否';如果是k-equal,则长度为k的每个子字符串都出现在这两个字符串上,并且必须为max,java,string,hashmap,substring,Java,String,Hashmap,Substring,我试图解决一个问题:给定2个字符串,我需要检查它们是否k相等,这意味着str1中长度为k的每个子字符串都出现在str2中,反之亦然。但子字符串的出现次数不必相等。我们可以假设字符串默认为零相等。最后,k必须是我们能找到的最大值。因此,如果两个字符串上都出现了长度为1和长度为2的子字符串,我们应该只返回长度为2的字符串 我如何处理收藏?例如HashMap 示例:将str1的所有子字符串散列在一个HashSet中,比如hash1。 现在生成str2的子字符串,检查它是否存在于hash1中,并维护一个

我试图解决一个问题:给定2个字符串,我需要检查它们是否k相等,这意味着str1中长度为k的每个子字符串都出现在str2中,反之亦然。但子字符串的出现次数不必相等。我们可以假设字符串默认为零相等。最后,k必须是我们能找到的最大值。因此,如果两个字符串上都出现了长度为1和长度为2的子字符串,我们应该只返回长度为2的字符串

我如何处理收藏?例如HashMap


示例:

将str1的所有子字符串散列在一个HashSet中,比如hash1。 现在生成str2的子字符串,检查它是否存在于hash1中,并维护一个max变量。
我认为这应该行得通,但这是一种蛮力方法。

我只是将str1中给定k的每个子字符串放入一个
集合
(一个
HashSet
可能行得通),让我们称之为set1。然后我会对str2中的每个子字符串执行相同的操作,并将其放入另一个set2中。在收集set2的子字符串时,我会检查该字符串是否已经在set1中-如果没有,那么我们可以立即中止。我认为如果两个集合的大小相等,那么就足以说明(在前面的检查之后)它们对于给定的k是k相等的。从k=1开始,在每次迭代后递增,直到找到一个不再有效的k。@CrushaK.Rool听起来是个好主意。我会尽快通知你。谢谢!一个
HashSet
就足够了,而不是使用
HashMap
。使用
集合
,您可以跟踪是否存在某些内容。
Map
用于将一个键与一个值相关联,因此这样做会有点过头。