力扣28. 实现 strStr()(KMP算法,JavaScript)
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)相关推荐
- 力扣刷题记录-回溯算法相关题目
首先介绍一下回溯算法 回溯通常在递归函数中体现,本质也是一种暴力的搜索方法,但可以解决一些用for循环暴力解决不了的问题,其应用有: 1.组合问题: 例:1 2 3 4这些数中找出组合为2的组合,有1 ...
- 力扣刷题-python-回溯算法-1(回溯算法模板、题型)
文章目录 1.回溯算法 2.回溯算法模板 3.回溯实例(77.216.17.39.40.131.93.78.90.491.46.47) 4.总结 1.回溯算法 回溯算法的本质就是穷举,最多再加上剪枝, ...
- 52 - 算法 - LeetCode 28 - 实现 strStr() -kmp
//又写了一下 kmp 参考以前的把它搞出来了 一个模式串next数组 一个遍历串 模式跳转 next[0]已经知道 从1开始 不等于 >0 && == 加加 class Sol ...
- js实现kmp算法_基于KMP算法JavaScript的实现方法分析
算法的核心是部分匹配表和回退算法,部分匹配表的实现如下: function kmpGetStrPartMatchValue(str) { var prefix = []; var suffix = [ ...
- LeetCode力扣刷题——简单易懂的贪心算法
贪心 一.算法解释 采用贪心的策略,保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的. 贪心算法问题需要满足的条件: (1)最优子结构:规模较大的问题的解由规模较小的子问题的解组成,规模较 ...
- 日撸力扣三道题---Day3---数组算法+二分查找
今天主要是对前两天的引用, 一道题是在一个数组中将不是0的数提前,0放到数组末尾,尽量在原数组上进行操作 解题思路是直接遍历将所有的非零数移动,改下标 代码实现 var moveZeroes = fu ...
- 力扣学习计划——数据结构与算法基础笔记
数据结构 数组 题目:136. 只出现一次的数字 题目:169. 多数元素 题目:15. 三数之和(难点) 这个方法就是我们常说的「双指针」,当我们需要枚举数组中的两个元素时,如果我们发现随着第一个元 ...
- LeetCode力扣刷题——千奇百怪的排序算法
排序算法 一.常见的排序算法 以下是一些最基本的排序算法.虽然在 C++ 里可以通过 std::sort() 快速排序,而且刷题时很少需要自己手写排序算法,但是熟习各种排序算法可以加深 ...
- 力扣45. 跳跃游戏 II(JavaScript)
//如果当前覆盖范围不能到达终点,则步数+1//在当前可覆盖范围内查找能到达终点的(或者最远的)步数 var jump = function(nums) {let ans=0 //步数let end= ...
最新文章
- 1-2 用Python编写【房价预测】模型----paddle
- Go 语言实现字符串匹配算法 -- BF(Brute Force) 和 RK(Rabin Karp)
- c# webservice生成客户端及使用时碰到decimal类型时的特殊处理
- 存储过程排版工具_我的绘图工具箱
- 【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(一)
- LineBasedFrameDecoder 行解码器,回车换行符解决 TCP 粘包
- [20140702]奇怪的应用程序超时
- 数据模型与决策_好的数据模型最终都为业务而生
- 概率论与计算机的关系小论文,概率论与数理统计论文
- 微信小程序应用百度地图API
- 邀请码:20111221235047_092555,有效期至2011-12-21 23:50:45
- java股票接口怎么样获得?
- 微服务并不能修复你破碎的组织文化
- 【渝粤教育】国家开放大学2018年秋季 2745T农村经济管理 参考试题
- 数据结构·堆·完全二叉树
- 关于Echarts折线图双Y轴网格的一些配置
- 《GPU高性能编程》——gl_helper.h
- eureka核心知识梳理
- 我转行程序员的那一年(七)
- 19 | 容器安全(1):我的容器真的需要privileged权限吗?
热门文章
- java sqlserver 二进制_Java将图片资源以二进制的形式保存到Sqlserver数据库中
- @aspect注解_Spring自定义注解玩法大全,从入门到放弃
- JavaWEB开发的国际化
- google annotation笔记
- java pattern split,Java中的Pattern splitAsStream()方法及其示例
- 基于JAVA+SpringBoot+Mybatis+MYSQL的化妆品售卖系统
- C#中的as和is的使用方法
- [BUAA软工]团队贡献分博客
- Djangosocket简单实现django简化版
- Just do IT --- gulp