KMP算法

来源:互联网 发布:网络侦探进化 编辑:程序博客网 时间:2024/05/13 08:37
/*KMP算法*/void main(){putsl(find('abc123','c1'))putsl(find('abc123','c2'))}int find(rstr s,rstr p){next=get_next(p)i=0j=0for i<s.count&&j<p.countif j==-1||s[i]==p[j]i++j++elsej=next[j]if j==p.countreturn i-jreturn -1}rbuf<int> get_next(rstr p){rbuf<int> next(p.count)next[0]=-1k=-1j=0for j<p.count-1if k==-1||p[j]==p[k]j++k++if p[j]!=p[k]next[j]=kelsenext[j]=next[k]elsek=next[k]return next}

0 0
原创粉丝点击