Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // string.h
- // limits.h
- int SearchString(const char *text, const char *pattern)
- {
- int m = strlen(pattern);
- unsigned long R;
- unsigned long patternMask[CHAR_MAX + 1];
- int i;
- if (pattern[0] == '\0') return 0;
- if (m > 31) return -1; //Error: The pattern is too long!
- R = ~1;
- for (i = 0; i <= CHAR_MAX; ++i)
- patternMask[i] = ~0;
- for (i = 0; i < m; ++i)
- patternMask[pattern[i]] &= ~(1UL << i);
- for (i = 0; text[i] != '\0'; ++i)
- {
- R |= patternMask[text[i]];
- R <<= 1;
- if (0 == (R & (1UL << m)))
- return (i - m) + 1;
- }
- return -1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement