|
>nが巨大でないなら,後ろから力任せに探すのが一番簡単な気がします。
力任せに作ってみました。
>BM法とか使ってもいいですが……。
http://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/
の20でも見てみます。
000: #include <stdio.h>
001: #include <string.h>
002:
003: int searchString( const char* txt, const char* pat );
004:
005: int main( void )
006: {
007: char txt[] = "abcdefghijklmnopqrstuvwxyz";
008: char pat[] = "hijklmn";
009:
010: printf("%d", searchString( txt, pat ));
011:
012: return 0;
013: }
014:
015: int searchString( const char* txt, const char* pat )
016: {
017: int n = strlen(txt);
018: int k = strlen(pat);
019: static int pos;
020:
021: for (pos = n - k; pos > 0; pos--) {
022: if (!strncmp((txt + pos), pat, k))
023: break;
024: }
025:
026: return pos;
027: }
028:
|