【发布时间】:2019-03-21 18:24:31
【问题描述】:
我有很多字符串,我需要检查有多少对包含相同的字符。
目前,我的策略是创建一个 int[128] 字符,并为字符串中的每个字符增加字符数。因此,最后,chars 将是一个 128 大小的数组,每个索引都映射到一个字符编号,而值则是它的计数。
然后我会使用 Java 的 Arrays.hashCode() 函数对字符进行哈希处理。
有没有更有效的方法来解决这个问题?我尝试在第一个循环中对字符串中的每个字符进行异或运算(连同构建字符),这很有效(但在我的分配测试用例中速度非常慢;我怀疑它们旨在破坏一个简单的异或哈希函数)。有没有有效的哈希函数?
【问题讨论】:
-
您能否提供一些示例输入,以及您希望针对该输入看到的确切输出?
-
据我了解您的问题,您的
hash-function 必须是可交换的。您是否尝试过对每个String进行哈希处理并将单个哈希值相加? -
@TimBiegeleisen 我无权访问某些测试用例,但要求规定每一行都是任意长度的 ASCII 字符(不包括换行符)。
-
@Turing85 除了我添加而不是 XOR 之外,这与我对每个字符的 XOR 不一样吗?
-
@Fabian 我不知道。我不知道你的代码。最简单的方法是进行性能分析(假设您确实存在性能问题)。