var strStr = function(haystack, needle) {//如果目标字符串长度为0,则返回0if(needle.length===0){return 0}//目标字符串长度不为0//找到next[]//初始化,next为空,第一个值为0let next=[]let j=0next.push(j)for(let i=1;i<needle.length;i++){//如果指针i和j的值不相等,则执行回退操作while(j>0&&needle[i]!==needle[j]){//当前元素为needle[j]//j回退到当前元素的前一个next[]值的下标j=next[j-1]}if(needle[i]==needle[j]){j++}//记录当前最长公共字串next.push(j)}//匹配文本字串haystacklet p=0  //指向needle//遍历haystackfor(let x=0;x<haystack.length;x++){while(p>0&&haystack[x]!==needle[p]){p=next[p-1]}if(haystack[x]==needle[p]){p++}//匹配完整if(p===needle.length){return (x-needle.length+1)}}return -1
};

力扣28. 实现 strStr()(KMP算法,JavaScript)相关推荐

  1. 力扣刷题记录-回溯算法相关题目

    首先介绍一下回溯算法 回溯通常在递归函数中体现,本质也是一种暴力的搜索方法,但可以解决一些用for循环暴力解决不了的问题,其应用有: 1.组合问题: 例:1 2 3 4这些数中找出组合为2的组合,有1 ...

  2. 力扣刷题-python-回溯算法-1(回溯算法模板、题型)

    文章目录 1.回溯算法 2.回溯算法模板 3.回溯实例(77.216.17.39.40.131.93.78.90.491.46.47) 4.总结 1.回溯算法 回溯算法的本质就是穷举,最多再加上剪枝, ...

  3. 52 - 算法 - LeetCode 28 - 实现 strStr() -kmp

    //又写了一下 kmp 参考以前的把它搞出来了 一个模式串next数组 一个遍历串 模式跳转 next[0]已经知道 从1开始 不等于 >0 && == 加加 class Sol ...

  4. js实现kmp算法_基于KMP算法JavaScript的实现方法分析

    算法的核心是部分匹配表和回退算法,部分匹配表的实现如下: function kmpGetStrPartMatchValue(str) { var prefix = []; var suffix = [ ...

  5. LeetCode力扣刷题——简单易懂的贪心算法

    贪心 一.算法解释 采用贪心的策略,保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的. 贪心算法问题需要满足的条件: (1)最优子结构:规模较大的问题的解由规模较小的子问题的解组成,规模较 ...

  6. 日撸力扣三道题---Day3---数组算法+二分查找

    今天主要是对前两天的引用, 一道题是在一个数组中将不是0的数提前,0放到数组末尾,尽量在原数组上进行操作 解题思路是直接遍历将所有的非零数移动,改下标 代码实现 var moveZeroes = fu ...

  7. 力扣学习计划——数据结构与算法基础笔记

    数据结构 数组 题目:136. 只出现一次的数字 题目:169. 多数元素 题目:15. 三数之和(难点) 这个方法就是我们常说的「双指针」,当我们需要枚举数组中的两个元素时,如果我们发现随着第一个元 ...

  8. LeetCode力扣刷题——千奇百怪的排序算法

    排序算法 一.常见的排序算法         以下是一些最基本的排序算法.虽然在 C++ 里可以通过 std::sort() 快速排序,而且刷题时很少需要自己手写排序算法,但是熟习各种排序算法可以加深 ...

  9. 力扣45. 跳跃游戏 II(JavaScript)

    //如果当前覆盖范围不能到达终点,则步数+1//在当前可覆盖范围内查找能到达终点的(或者最远的)步数 var jump = function(nums) {let ans=0 //步数let end= ...

最新文章

  1. 1-2 用Python编写【房价预测】模型----paddle
  2. Go 语言实现字符串匹配算法 -- BF(Brute Force) 和 RK(Rabin Karp)
  3. c# webservice生成客户端及使用时碰到decimal类型时的特殊处理
  4. 存储过程排版工具_我的绘图工具箱
  5. 【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(一)
  6. LineBasedFrameDecoder 行解码器,回车换行符解决 TCP 粘包
  7. [20140702]奇怪的应用程序超时
  8. 数据模型与决策_好的数据模型最终都为业务而生
  9. 概率论与计算机的关系小论文,概率论与数理统计论文
  10. 微信小程序应用百度地图API
  11. 邀请码:20111221235047_092555,有效期至2011-12-21 23:50:45
  12. java股票接口怎么样获得?
  13. 微服务并不能修复你破碎的组织文化
  14. 【渝粤教育】国家开放大学2018年秋季 2745T农村经济管理 参考试题
  15. 数据结构·堆·完全二叉树
  16. 关于Echarts折线图双Y轴网格的一些配置
  17. 《GPU高性能编程》——gl_helper.h
  18. eureka核心知识梳理
  19. 我转行程序员的那一年(七)
  20. 19 | 容器安全(1):我的容器真的需要privileged权限吗?

热门文章

  1. java sqlserver 二进制_Java将图片资源以二进制的形式保存到Sqlserver数据库中
  2. @aspect注解_Spring自定义注解玩法大全,从入门到放弃
  3. JavaWEB开发的国际化
  4. google annotation笔记
  5. java pattern split,Java中的Pattern splitAsStream()方法及其示例
  6. 基于JAVA+SpringBoot+Mybatis+MYSQL的化妆品售卖系统
  7. C#中的as和is的使用方法
  8. [BUAA软工]团队贡献分博客
  9. Djangosocket简单实现django简化版
  10. Just do IT --- gulp