假设有很多二进制字符串
x <- c("0100100010101010", "0100110010101010","0111001000","010111")
我正在寻找 R 中的一种快速方法来输出一个矩阵,该矩阵包含从开始到结束的成对(不包括自匹配)最长公共子串。例如,解决方案可能如下所示
> mySolution(x)
[,1] [,2] [,3] [,4]
[1,] "" "01001" "01" "010"
[2,] "01001" "" "01" "010"
[3,] "01" "01" "" "01"
[4,] "010" "010" "01" ""
例如,位置 [1,2] 处的矩阵是从 和 开始的最长公共子串x[1]
。x[2]
请注意,生成的矩阵是对称的。因此,我们只需要计算它的一半。
我知道可以与类似函数一起使用substr,sub,grepl
,但由于我有很多字符串,我正在寻找一种非常有效的解决方案,需要很少的计算时间。也许可以将其转换为二进制数以提高性能?