当前位置: 首页 > wzjs >正文

企业网站开发上海韵茵信息流广告推广

企业网站开发上海韵茵,信息流广告推广,wordpress媒体库图片太多,开发手机网站用什么好处KMP目录 KMP 基础知识构建前缀表使用前缀表减少运算步骤 28. 找出字符串中第一个匹配项的下标459. 重复的子字符串 KMP 基础知识 奇乐编程学院 https://www.bilibili.com/video/BV1AY4y157yL/?spm_id_from333.1391.0.0 代码随想录 https://www.bilibili.com/video/BV1PD4y1o7…

KMP目录

  • KMP 基础知识
    • 构建前缀表
    • 使用前缀表减少运算步骤
  • 28. 找出字符串中第一个匹配项的下标
  • 459. 重复的子字符串

KMP 基础知识

奇乐编程学院
https://www.bilibili.com/video/BV1AY4y157yL/?spm_id_from=333.1391.0.0
代码随想录
https://www.bilibili.com/video/BV1PD4y1o7nd?spm_id_from=333.788.videopod.sections&vd_source=9e875f3cfd35b93ea904ffd5c3c157a5
一个人能走的多远不在于他在顺境时能走的多快,而在于他在逆境时多久能找到曾经的自己。
————KMP

(复制的B站评论)

概述:使用前缀表来代替重复比较。
kmp算法关键在于:在当前对文本串和模式串检索的过程中,若出现了不匹配,如何充分利用已经匹配的部分。
主要步骤:

  1. 构建前缀表
  2. 遍历字符串,利用前缀表进行更新

构建前缀表

前缀不包含尾字母,一定包含首字母的所有子串。
后缀不包含首字母,一定包含尾字母的所有字串。
在构建前缀表的时候就使用了KMP思想。
在这里插入图片描述
在这里插入图片描述

使用前缀表减少运算步骤

前面i,j都是在同一个字符串下。求重复子串的时候,
KMP算法遇到不匹配的地方,可以直接跳到上一次匹配的地方继续匹配。
在这里插入图片描述

在这里插入图片描述

28. 找出字符串中第一个匹配项的下标

就是存在问题的基础上,如果遍历过程中遇到j==needle.size();直接返回return i-needle.size()+1;
下面注释了一个双指针法,两个指针遍历两个字符串,在没接触KMP时候写的。

class Solution {
public:void build_next(vector<int>& next, string s){next[0] = 0;int j = 0;//前缀的末尾for(int i = 1; i < s.size(); i ++){ //i后缀的末尾,就是表示这个子串的结束while(j>0 && s[i]!=s[j]){j = next[j-1];}if(s[i] == s[j]){j++;}next[i] = j;}}int strStr(string haystack, string needle) {if (needle.empty()) return 0;vector<int> next(needle.size());build_next(next, needle);int j = 0;for(int i = 0; i < haystack.size(); i++){while(j>0 && haystack[i]!=needle[j]){j = next[j-1];}if(haystack[i] == needle[j]){j++;}if(j == needle.size()) return i-needle.size()+1;}return -1;}
};// for(int i=0; i < haystack.size(); i++){//     int left = 0;//     if(needle[left]==haystack[i]){//         int right = i+1;//         left++;//         while(left<needle.size()){//             if(needle[left]!=haystack[right]) break;//             left++;//             right++;//         }//         if(left == needle.size()) return i;//     }// }// return -1;

459. 重复的子字符串

在这里插入图片描述

在这里插入图片描述

class Solution {
public:void build_next(vector<int>& next, string s){int j = 0;next[0] = 0;//初始化for(int i = 1; i < s.size(); i++){while(s[i]!=s[j] && j>0){j = next[j-1];//跳跃到下一个要比较的地方}if(s[i]==s[j]) next[i] = ++j;}}bool repeatedSubstringPattern(string s) {int n = s.size();vector<int> next(n);build_next(next, s);int len = next[n-1];return len > 0 && n % (n - len) == 0;}
};
http://www.dtcms.com/wzjs/506941.html

相关文章:

  • 小型电商网站模板网络营销的特征和功能
  • 广州城乡建设网站磁力蜘蛛
  • 网站制作图片插入代码google网站入口
  • 网站设计的内容seo全网营销
  • 个人房产信息网查询网签备案信息天津seo排名扣费
  • 重庆做网站开发的公司有哪些网络推广岗位职责和任职要求
  • 生日礼物自己做网站百度关键字搜索量查询
  • 影响网站用户体验百度搜索词热度查询
  • html5网站开发demo郑州网站运营实力乐云seo
  • 建筑网建设通seo推广招聘
  • seo方案书案例一键优化软件
  • 蓬莱做网站公司网店代运营十大排名
  • h5制作软件教程安卓优化大师官方版本下载
  • 中国最大网站建设公司新闻网站排行榜
  • 学校网站建设管理相关规定网络营销包括
  • 网站文章怎么做内链seo优化员
  • 商城版网站制作专业软文代写
  • 武汉建立网站网站快速优化排名方法
  • 广东的一起(17)做网站网络营销与传统营销有哪些区别
  • 咨询公司管理制度seo排名快速刷
  • dw做网站一般设为什么样广告投放平台有哪些
  • 集团网站设计开发优化快速排名公司
  • 有哪些网站是免费学做网页的免费做网站怎么做网站
  • 产品营销网站建设南京市网站
  • 可以网上做单的网站有哪些万网域名管理平台
  • 网页内嵌网站b站推广网站入口
  • 主播网站开发百度电话怎么转人工客服
  • 宝贝我想跟你做网站专业网络推广公司
  • 北京网站开发网站建设报价百度邮箱注册入口
  • 怎么连接网站的虚拟主机互动营销是什么