naiveMatch ¼Ò¹Ú¹ý¿¡ µû¸£´Â ij¸¯ÅÍ ¶óÀÎ Á¶ÇÕ
char *naiveMatch(char *text, int len, char *pattern, int patlen);
text (ÀÔ·Â) ÅؽºÆ® len (ÀÔ·Â) ÅؽºÆ®ÀÇ ±æÀÌ pattern (ÀÔ·Â) Á¶ÇÕ ÆÐÅÏ patlen (ÀÔ·Â) Á¶ÇÕ ÆÐÅÏÀÇ ±æÀÌ
Á¶ÇÕ ÆÐÅÏÀÌ ÅؽºÆ®·ÎºÎÅÍ ¹ß°ßµÇ¾úÀ» °æ¿ì´Â ±× Æ÷ÀÎÅÍ, ¹ß°ßµÇÁö ¾Ê¾Ò´ø °æ¿ì´Â 0 (NULL).
char *naiveMatch(char *text, int len, char *pattern, int patlen) { char c; char *tp, *pp; char *textEnd, *patEnd; if (patlen == 0) return text; if (len < patlen) return NULL; textEnd = text + len - patlen + 1; patEnd = pattern + patlen; c = *pattern++; while (text ! = textEnd) { if (*text++ == c) { tp = text; pp = pattern; do if (pp == patEnd) return text - 1; while (*tp++ == *pp++); } } return NULL; }
ÅؽºÆ®¿¡ Á¶ÇÕ ÆÐÅÏÀ» °ÅµìÇØ, ÀÏÄ¡ÇÒÁö ¾î¶³Áö¸¦ Á¶»çÇÑ´Ù. ÀÏÄ¡ÇÏ´Â°Å¾ß Â÷¸é °ÅµìÇÏ´Â À§Ä¡¸¦ ¿À¸¥ÂÊÀ¸·Î 1°³¾Ê°íµé ÇØ ¹Ýº¹ÇÑ´Ù.
ÀÌ ¹æ¹ýÀÇ °è»ê·®Àº, ÃÖ¾ÇÀÇ °æ¿ì O(mn)ÀÌ´Ù. ´Ù¸¸, m, n´Â °¢°¢ ÅؽºÆ®, Á¶ÇÕ ÆÐÅÏÀÇ ±æÀ̸¦ ³ªÅ¸³½´Ù.