力ずくのアルゴリズム

プログラムの図的表現

a
b
a
c
a
b
c

a
b
c



変数の動き

変数「i」の動き
i =
変数「j」の動き
j =

プログラム操作




int naive(char t[], char p[]) {
  int i = 0;
  int j = 0;
  int m = strlen(p);
  int n = strlen(t);

  while (i < m && j < n) {
    if (p[i] == t[j]) {
      i++;
      j++;
    }
    else {
      j = j - i + 1;
      i = 0;
    }
  }
  if(i == m)
    return (j - i);
  else
    return (-1);
}

プログラムの図的表現

a
b
a
c
a
b
c

a
b
c