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´Â °¢°¢ ÅØ½ºÆ®, Á¶ÇÕ ÆÐÅÏÀÇ ±æÀ̸¦ ³ªÅ¸³½´Ù.