2017-10-27 2 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

ヨこの問題を[再現可能](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 
関連する問題