【发布时间】:2014-03-21 11:35:02
【问题描述】:
这样的正则表达式的时间复杂度是多少(对任何字符串都可以操作):"(.{5})\1\1"
我的实现是:
reps <- function(s, n) paste(rep(s, n), collapse = "") # repeat s n times
find.string <- function(string, th = 3, len = floor(nchar(string)/th)) {
for(k in len:1) {
pat <- paste0("(.{", k, "})", reps("\\1", th-1))
r <- regexpr(pat, string, perl = TRUE)
if (attr(r, "capture.length") > 0) break
}
if (r > 0) substring(string, r, r + attr(r, "capture.length")-1) else ""
}
请帮忙。谢谢! :)
【问题讨论】:
-
听起来非常像一个家庭作业问题......
-
可能取决于您对正则表达式的操作。
grep和system.time应该可以完成。
标签: regex string r time-complexity backreference