Java Horner的多项式累加法

标签 java hashcode hashset polynomial-math

到目前为止,我已经有了这段代码,总的来说,它在cmd中获取两个文本文件和指定的 block 大小,并将txt文件标准化,然后根据指定的 block 大小将它们放入 block 中。

import java.io.*;
import java.util.*;

public class Plagiarism {

    public static void main(String[] args) throws Exception {
        //you are not using 'myPlag' anywhere, you can safely remove it
//      Plagiarism myPlag = new Plagiarism();

        if (args.length == 0) {
            System.out.println("Error: No files input");
            System.exit(0);
        }

        String foo = null;
        for (int i = 0; i < 2; i++) {
            BufferedReader reader = new BufferedReader(new FileReader(args[i]));
            foo = simplify(reader);
            // System.out.print(foo);
            int blockSize = Integer.valueOf(args[2]);

            List<String> list = new ArrayList<String>();
            for (int k = 0; k < foo.length() - blockSize + 1; k++) {
                list.add(foo.substring(k, k + blockSize));
            }
            // System.out.print(list);
        }



    }

    public static String simplify(BufferedReader input)
            throws IOException {

        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = input.readLine()) != null) {
            sb.append(line.replaceAll("[^a-zA-Z]", "").toLowerCase());
        }
        return sb.toString();
    }
}

我想做的下一件事是使用 Horner 的多项式累加方法(设置值 x = 33)将每个 block 转换为哈希码。我完全被难住了,非常感谢你们的帮助!

感谢您的阅读,并提前感谢您提供的任何建议!

最佳答案

Horner 的哈希生成方法非常简单

int hash=0;
for(int i=0;i<str.length();i++)
  hash = x*hash + str.charAt(i);

关于Java Horner的多项式累加法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22405235/

相关文章:

java - Spring Security 需要 ContextLoaderListener 但我正在使用带注释的配置,该怎么办?

java - 使用 Websphere 共享库时 Hibernate java.lang.ClassCastException : _$$_javassist_856 cannot be cast to javassist. util.proxy.Proxy

algorithm - 随机生成整数的通用哈希函数插入后如何进行查找?

Java HashMap 未从键获取值

java - 如何让这段代码重复多次

java - 使用 HashSet 对生日悖论进行蒙特卡罗分析

java - 删除二维ArrayList中的重复条目

java - Android Studio 无法检测到 JDK7 或更新版本

java - 如何创建单个注释在 Java 中接受多个值

c# - 在 C# 中使用 SHA1 算法进行散列