Leetcode28 KMP算法 击败100%
实现 strStr() 函数。
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。
本方法使用了kmp算法,时间快过leetcode上的答案,参考了知乎大佬的文章如何好地理解和掌握 KMP 算法?
class Solution {/*** @param haystack 原串* @param needle 匹配串* @return*/public int strStr(String haystack, String needle) {if (needle.isEmpty()){return 0;}int n = haystack.length();int m = needle.length();char[] hay = haystack.toCharArray();char[] nee = needle.toCharArray();int next[] = new int[m+1];//算出next数组next[0] = -1;int i = 0,j = -1;while (i<m){if (j==-1 || nee[i]==nee[j]){++i;++j;next[i] = j;}else {j = next[j];}}//**************//根据next数组进行kmp算法int x = 0,y=0;while (x<n && y<m){if (y==-1 || hay[x]==nee[y]){x++;y++;}else {y = next[y];}}//**************if (y==nee.length){return x-y;}else {return -1;}}
}
Leetcode28 KMP算法 击败100%相关推荐
- leetcode28. Implement strStr() (以及个人对KMP算法理解)
kmp算法标准板子题 class Solution { public:vector<int> getNext(string needle){vector<int> next(n ...
- hiho 1015 KMP算法 CF 625 B. War of the Corporations
#1015 : KMP算法 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在 ...
- 数据结构--KMP算法总结
数据结构-KMP KMP算法用于解决两个字符串匹配的问题,但更多的时候用到的是next数组的含义,用到next数组的时候,大多是题目跟前后缀有关的 . 首先介绍KMP算法:(假定next数组已经学会, ...
- 字符串匹配的KMP算法
举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?1.字符串"BBC A ...
- 第八周项目实践6 KMP算法(串的模式匹配)
sqString.h #ifndef SqString_H_INCLUDED #define SqString_H_INCLUDED#define MaxSize 100 //最多的字符个数 type ...
- 微软等数据结构+算法面试100题全部答案集锦
微软等数据结构+算法面试100题全部答案集锦 作者:July.阿财. 时间:二零一一年十月十三日. 引言 无私分享造就开源的辉煌. 今是二零一一年十月十三日,明日14日即是本人刚好开博一周年.在一周年 ...
- KMP算法~看的清楚~
KMP算法 在介绍KMP算法之前,先介绍一下BF算法. 一.BF算法 BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个 ...
- KMP算法--字符串模式匹配算法
今天看到第四章<串>了,其中我觉得花的时间多一点的值得我写篇随笔的知识点就是:4.3 串的模式匹配算法:书上介绍了两种字符串匹配算法,一种是最简单最容易想到的逐个字符匹配算法(时间复杂度在 ...
- KMP算法详解及各种应用
KMP算法详解: KMP算法之所以叫做KMP算法是因为这个算法是由三个人共同提出来的,就取三个人名字的首字母作为该算法的名字.其实KMP算法与BF算法的区别就在于KMP算法巧妙的消除了指针i的回溯问题 ...
最新文章
- barmanager 不显示_广州13.3寸广告液晶显示屏品牌排行榜
- 【深度学习】(6) tensorflow2.0使用keras高层API
- [转] React Hot Loader 3 beta 升级指南
- SAP MM ME21N 创建委外采购PO报错 - Not possible to determine any components - 之对策
- 【Vegas原创】VMWare安装Linux5的注意事项
- 如何删除VS2015中的OpenCV的配置
- 【Android 异步操作】线程池 ( 线程池使用示例 | 自定义线程池使用流程 | 自定义任务拒绝处理策略 | 完整代码示例 )
- html5游戏暂停按钮,HTML5 圆形进度控制(播放、暂停)按钮
- 类属性的特征java_java定义类、属性、方法
- Minimum Inversion Number HDU - 1394(权值线段树/树状数组)
- WORD中如何转换符号的全角半角
- 机器翻译市场需求调研报告
- 软件dfmea_DFMEA与PFMEA之间不得不说的关系
- ip地址聚合后可用地址数 计算机网络技术三级考试 备考
- yy直播插入php网页,网页YY迷你版怎么用 网页YY直播间进入方法步骤
- pandas学习之变形
- 余秋雨 成熟是一种明亮而不刺眼的光辉
- 移动最小二乘实现点云插值(上采样 | 增采样)详细讲解❤️❤️❤️
- matlab矩阵运算中“.”的使用
- form表单自动与手动提交