【发布时间】:2018-07-19 22:40:54
【问题描述】:
你知道任何现成的方法来获取长度和两个字符串的重叠吗?但是只有R,也许来自stringr?我一直在看这里,不幸的是没有成功。
str1 <- 'ABCDE'
str2 <- 'CDEFG'
str_overlap(str1, str2)
'CDE'
str_overlap_len(str1, str2)
3
其他例子:
str1 <- 'ATTAGACCTG'
str2 <- 'CCTGCCGGAA'
str_overlap(str1, str2)
'CCTG'
str_overlap_len(str1, str2)
4
///
str1 <- 'foobarandfoo'
str2 <- 'barand'
str_overlap(str1, str2)
'barand'
str_overlap_len(str1, str2)
6
/// 是两个解决方案,总是选择总是重叠
str1 <- 'EFGABCDE'
str2 <- 'ABCDECDE'
str_overlap(str1, str2)
'ABCDE'
str_overlap_len(str1, str2)
5
我想知道这个自制的小功能,比如this one?
【问题讨论】:
-
输入为
str1 <- c("EFGABCDE", "ABCDECDE")时的预期输出是什么?请提供更多示例以了解预期输出。 -
您在寻找最长的公共子串吗?查看stackoverflow.co/search?q=%5Br%5D+longest+common+substring
-
我不明白你自己做和避免动态编程的意思
-
这是我的实现(改编自@gaurav-taneja,如果字符串 a 比 b 长,效率更高):
str_overlap = function(a, b) { if(nchar(a) > nchar(b)){ a0 = a; a = b; b = a0 }; for(n in seq(1, nchar(a))) { sb = unique(combn(strsplit(a, "")[[1]], n, FUN=paste, collapse="")); if(length(unlist(str_extract_all(b, sb))) == 0){ r = prior; return(r) }; prior = unlist(str_extract_all(b, sb)) }; prior }
标签: r string bioinformatics overlap dna-sequence