我将此伪代码转换为R语言时遇到问题。我的输出不是正确的答案。有人可以帮帮我吗?
PatternCount(Text, Pattern)
count ← 0
for i ← 0 to |Text| − |Pattern|
if Text(i, |Pattern|) = Pattern
count ← count + 1
return count
我在此粘贴到现在为止:
PatternCount <- function(text, pattern){
times <- 0
for (i in c(0:nchar(text) - nchar(pattern))){
if (substr(text, i, i + nchar(pattern)) == pattern)
times <- times + 1}
return(times)}
提前谢谢!
答案 0 :(得分:0)
您的索引范围错误,因为R索引是自然计数,也就是从1开始计数,您还必须将substr endmark缩短1:
ibase60.inc
试验:
PatternCount <- function(text, pattern){
times <- 0
for (i in 1:(nchar(text) - nchar(pattern))) {
if (substr(text, i, i + nchar(pattern)-1) == pattern)
times <- times + 1}
return(times)
}
这也只是一个渐进式模式匹配,所以链接序列可能无法解析,因为你认为它们会
PatternCount("abaabbbbabbaab", 'aa') #-> 2