string - 用于捕获可疑相似代码的最佳字符串比较算法

标签 string algorithm

我正在尝试实现一个代码执行系统,并且我正在寻找一种方法来捕获来自不同用户的可疑的相似提交代码。我的想法是使用 Dice 的系数来比较提交的字符串。可以将它用于我的案例吗?如果不行,是否有一些更好的算法。

最佳答案

字符串比较算法不是我的主要关注点。骰子或 Levenshtein 或 q-gram 应该无关紧要(尽管我不是专家)。

主要是将您的代码转换为一系列标记。将第一个未知标记标记为 1,第二个标记为 2 等。然后比较两个标记字符串。如果一个人所做的只是更改一些变量名称,这将为您提供精确匹配。

如果标记与关键字匹配,您可以提供唯一的标签,以更加复杂if with for do等...(大多数语言都有相似的关键字)。这样可以避免误报。


例子:

示例 1:

name = 'fred'
print(name)

示例 2:

my_name = 'harry'
print(my_name)

sample1 代币:name, =, ', fred, ', print, (, name, )

sample1 处理的 token :1, 2, 3, 4, 3, 5, 6, 1, 6

sample2 代币:my_name, =, ', harry, ', print, (, my_name, )

sample2 处理的标记:1, 2, 3, 4, 3, 5, 6, 1, 6

现在您匹配来自 sample1 和 sample2 的已处理 token

关于string - 用于捕获可疑相似代码的最佳字符串比较算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56047144/

相关文章:

java - 分割字符串以将每个单词与数组列表进行比较

python - 在 python 中识别字符串中的子字符串的最有效方法?

regex - 在第一个和最后一个逗号上拆分字符串

c++ - 随机数或 UUID 的异或

java - 如何使用 while 循环找到最大整数 (n),使得 n^3 < 12,000

c++ - std::max_element() 有多聪明?

string - 如何将 Int 转换为给定长度的字符串,前导零对齐?

python - 如何使用 python/pandas 根据一列中的字符串拆分和复制行?

c# - 根据连续调用之间耗时优化批量大小

java - 分类调度作业