■スレッドリストへ戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 最新50

プログラマが2chを救う!?

328 :デフォルトの名無しさん :2001/08/26(日) 04:18
BadAccess関数の最適化。
strstrのかわりなる物を作ってみた。
strstrがどんな仕組みで動いているかしらないので、本当に速いのかどうか・・。

// text2 (検索する文字列)の長さが255以下の場合でしか動かない
char *strstr_BM256(char* text, char* text2) {

char tail;
unsigned char skip[256];
unsigned int len = strlen(text2), longlen = strlen(text), i, x, y;

if (longlen < len) return NULL;
tail = text2[len];

// 長さが1の時の対策は省略

memset(skip, (unsigned char)len, 256);
for (i = 0, len--; i < len; i++)
skip[(unsigned char)text2[i]] = (unsigned char)(len - i);
// i = len - 1;
while (i < longlen) {
if (text[i] == tail) {
x = i; y = len;
while (text[--x] == text2[--y]) {
if (y == 0) return &text[x];
}
}
i += skip[(unsigned char)text[i]];
}
return NULL;
}

231KB
新着レスの表示

スレッドリストへ戻る 全部 前100 次100 最新50

0ch BBS 2004-10-30