标签:
这道题是字符串匹配,用的Sunday算法[1],边界条件是模式串和原串为空的情况。
[1] 字符串匹配算法 – Sunday算法 - 如斯夫 - 博客园 http://www.cnblogs.com/lbsong/archive/2012/05/25/2518188.html
代码如下:
class Solution { public: int strStr(char *haystack, char *needle) { int i=0,j=0,m=0; int l1 = strlen(haystack); int l2 = strlen(needle); if(l1==0&&l2==0) return 0; else if(l2==0) return 0; else if(l1==0) return -1; int index = -1; m = l2; while(i<l1) { if(*(haystack+i)==*(needle+j)) { i++; j++; if(j==l2) { index = i-l2; break; } } else { j=0; i = m; for(int k=l2-1;k>=0;k--) if(*(needle+k)==*(haystack+m)) { i = m-k; break; } m = i + l2; } } return index; } };
标签:
原文地址:http://www.cnblogs.com/ZhangYushuang/p/4299630.html