2017-10-27 12 views
0

이 의사 코드를 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)} 

사전에 감사합니다!

+1

요 또한이 문제를 만들기 위해 샘플 입력과 해당 입력에 대한 원하는 출력을 제공해야합니다. [reproducible] (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). 또한'? x |'와'x (a, b) '가 의사 코드에서 무엇을 의미 하는지를 정확히 설명하는 데 도움이 될 것입니다. – MrFlick

+0

'길이 (gregexpr ("an", "banana") [[1]])'은'바나나 '에서'an'의 횟수를 계산합니다. –

답변

0

귀하의 색인 범위는 일명 또한 1 일까지 SUBSTR의 endmark을 단축 할 수 있고, 1에서 계산을 시작, 자연 계산에 의한 R 인덱스로, 잘못 :

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 

또한 이것은 진보적 인 패턴 매치이므로, 연결 시퀀스는 자신이 생각하기에 해결되지 않을 수도 있습니다.

PatternCount("abaaaab", 'aa') #-> 3