响应式培训网站模板wordpress 页头设置
2026/6/9 16:33:57 网站建设 项目流程
响应式培训网站模板,wordpress 页头设置,国外上市网络公司排名,大型电子商务网站建设方案kmp算法运用于字符串匹配#xff0c;具体实现过程如下#xff1a;拿从母串中找是否存在某个字串举例1.求字串的next数组#xff0c;什么是next数组#xff0c;即每个字母所在位置对应的最长相等前后缀#xff0c;例如abcabf的next数组就是000120#xff0c;那如何找一个n…kmp算法运用于字符串匹配具体实现过程如下拿从母串中找是否存在某个字串举例1.求字串的next数组什么是next数组即每个字母所在位置对应的最长相等前后缀例如abcabf的next数组就是000120那如何找一个next数组呢void getnext(int next[], char* s) { int len_ strlen(s);//求出字符串长度 int j 0; next[0] 0; for (int i 1; i len_; i) { while (j 0 s[j] ! s[i]) { j next[j - 1];//回退 } if (s[j] s[i]) { j; } next[i] j; } }首先我们将next首元素赋值为0j是前缀指针i是后缀指针i一直向后移动只有当i和j指向元素是相同的时候j才向后移动。一旦不相等j就一直回退一种可能是到相等位置一种可能一直找不到相等的回到首元素位置。要注意的是j不仅是前缀指针它同时也是每个元素对应的next2.将子串和母串进行比对i指向母串一直向后移动j指向子串从遇到相等的开始j也开始移动。一旦不相等j就开始回退也是两种情况一种可能是到相等位置一种可能一直找不到相等的回到首元素位置。一旦j移动到元素末尾即表示存在bool judge(char* a, char* b,int next[]) { int j 0;//这是字串 int i 0;//这是母串 int len1 strlen(a); int len2 strlen(b); for (i 0; i len2; i) { while (j 0 a[j] ! b[i]) { j next[j - 1];//回退 } if (a[j] b[i]) { j; } if (j len1) { return true; } } if (j ! len1) { return false; } return 0; }这是全部实现过程如有错误请指出void getnext(int next[], char* s) { int len_ strlen(s);//求出字符串长度 int j 0; next[0] 0; for (int i 1; i len_; i) { while (j 0 s[j] ! s[i]) { j next[j - 1];//回退 } if (s[j] s[i]) { j; } next[i] j; } } bool judge(char* a, char* b,int next[]) { int j 0;//这是字串 int i 0;//这是母串 int len1 strlen(a); int len2 strlen(b); for (i 0; i len2; i) { while (j 0 a[j] ! b[i]) { j next[j - 1];//回退 } if (a[j] b[i]) { j; } if (j len1) { return true; } } if (j ! len1) { return false; } return 0; } int main() { char str1[100];//子串 char str2[200];//母串 int next[101]; scanf(%s%s, str1, str2); getnext(next, str1); bool res judge(str1, str2,next); printf(%s, res ? true : false); return 0; }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询