我正在使用Rabin-Karp算法来检查任何两个源代码文件的抄袭,所以首先我简单地在c#中实现其算法,但是它的平均和最佳情况下的运行时间是O(n + m)空间O(p) ,但最坏情况的时间是O(nm).
public void plagiarism(string [] file1, string [] file2)
{
int percent = 0;
for (int i = 0; i <(file1.Length - file2.Length +1); i++)
{
for (int j = 0; j < file1.Length; j++)
{
if (file1[i + j - 1] != file2[j])
{
}
percent++;
Console.WriteLine(percent);
}
Console.WriteLine("not copied");
}
}
Run Code Online (Sandbox Code Playgroud)
那么如何通过使用滚动哈希函数来提高效率,因为这比这更好..
public void duplicate()
{
int repeatation = 0;
Node current = root;
Node duplicate = root;
while (current == null)
{
if (duplicate == current || duplicate == current.right || duplicate== current.left)
{
Console.WriteLine("node is repeated :" + duplicate);
repeatation++;
}
}
Console.WriteLine("number of repeatation is :" + repeatation);
}
Run Code Online (Sandbox Code Playgroud)
这段代码用于二元搜索树中的重复元素以及元素重复多少次但它不能正常工作,你能不能告诉我这段代码有什么问题,我不确定我是否正确编码......