小编c14*_*ppy的帖子

在Rabin-Karp字符串搜索算法中是否使用了滚动哈希函数的任何工作实现?

我正在寻找使用滚动哈希函数,所以我可以采用一个非常大的字符串的n-gram哈希值.

例如:

"stackoverflow",分解成5克将是:

"stack","tacko","ackov","ckove","kover","overf","verfl","erflo","rflow"

这对于滚动哈希函数是理想的,因为在我计算第一个n-gram哈希之后,以下的哈希计算相对便宜,因为我只需要删除第一个哈希的第一个字母并添加第二个哈希的新的最后一个字母.

我知道通常这个哈希函数生成为:

H = c 1 a k - 1 + c 2 a k - 2 + c 3 a k - 3 + ... + c k a 0其中a是常数,c1,...,ck是输入字符.

如果您在Rabin-Karp字符串搜索算法上遵循此链接,它会声明"a"通常是一些大素数.

我希望我的哈希值存储在32位整数中,那么素数的大小应该是"a",这样我就不会溢出整数?

在我可以使用的某个地方是否存在此哈希函数的现有实现?


这是我创建的一个实现:

public class hash2
{

    public int prime = 101;

    public int hash(String text)
    {
        int hash = 0;

        for(int i = 0; i < text.length(); i++)
        {
            char c = text.charAt(i);
            hash += c * (int) (Math.pow(prime, text.length() …
Run Code Online (Sandbox Code Playgroud)

c# java algorithm hash rabin-karp

13
推荐指数
1
解决办法
3840
查看次数

是否有适用于ANTLR的C++语法文件?

是否有任何现有的ANTLR C++语法文件?

我正在寻找lex,而不是解析一些C++源代码文件.

我查看了ANTLR语法页面,看起来有一个由Sun Microsystems 在这里创建的列表.

但是,它似乎是一个生成的Parser.

任何人都可以指向我的C++ ANTLR词法分析器或语法文件?

c++ antlr lexer

10
推荐指数
1
解决办法
6310
查看次数

标签 统计

algorithm ×1

antlr ×1

c# ×1

c++ ×1

hash ×1

java ×1

lexer ×1

rabin-karp ×1