1 字符串匹配问题
char *strstr(const char*str,const,char *substr)//匹配substr在str中的位置
{
    
int i,j,len1,len2;
    len1
=strlen(str);
    len2
=strlen(substr);
    i
=j=0;
    
while(i<len1&&j<len2)
    {
        
if(str[i]==substr[j])
        {
            i
++;
            j
++;
        }
        
else
        {
            i
=i-j+1;
            j
=0;
        }
    }
    
if(j==len2)
        
return &str[i-len2];
    
else
        
return str;
}
char *strstr(const char*str,const,char *substr)//KMP算法
{
    
int i,j,len1,len2;
    len1
=strlen(str);
    len2
=strlen(substr);
    i
=j=0;
    
while(i<len1&&j<len2)
    {
        
if(j==-1||str[i]==substr[j])
        {
            i
++;
            j
++;
        }
        
else
            j
=next[j];
    }
    
if(j==len2)
        
return &str[i-len2];
    
else
        
return str;
}




 posted on 2009-09-30 10:34  清水湾  阅读(127)  评论(0)    收藏  举报