实现 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%相关推荐

  1. leetcode28. Implement strStr() (以及个人对KMP算法理解)

    kmp算法标准板子题 class Solution { public:vector<int> getNext(string needle){vector<int> next(n ...

  2. hiho 1015 KMP算法 CF 625 B. War of the Corporations

    #1015 : KMP算法 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在 ...

  3. 数据结构--KMP算法总结

    数据结构-KMP KMP算法用于解决两个字符串匹配的问题,但更多的时候用到的是next数组的含义,用到next数组的时候,大多是题目跟前后缀有关的 . 首先介绍KMP算法:(假定next数组已经学会, ...

  4. 字符串匹配的KMP算法

    举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?1.字符串"BBC A ...

  5. 第八周项目实践6 KMP算法(串的模式匹配)

    sqString.h #ifndef SqString_H_INCLUDED #define SqString_H_INCLUDED#define MaxSize 100 //最多的字符个数 type ...

  6. 微软等数据结构+算法面试100题全部答案集锦

    微软等数据结构+算法面试100题全部答案集锦 作者:July.阿财. 时间:二零一一年十月十三日. 引言 无私分享造就开源的辉煌. 今是二零一一年十月十三日,明日14日即是本人刚好开博一周年.在一周年 ...

  7. KMP算法~看的清楚~

    KMP算法 在介绍KMP算法之前,先介绍一下BF算法. 一.BF算法 BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个 ...

  8. KMP算法--字符串模式匹配算法

    今天看到第四章<串>了,其中我觉得花的时间多一点的值得我写篇随笔的知识点就是:4.3 串的模式匹配算法:书上介绍了两种字符串匹配算法,一种是最简单最容易想到的逐个字符匹配算法(时间复杂度在 ...

  9. KMP算法详解及各种应用

    KMP算法详解: KMP算法之所以叫做KMP算法是因为这个算法是由三个人共同提出来的,就取三个人名字的首字母作为该算法的名字.其实KMP算法与BF算法的区别就在于KMP算法巧妙的消除了指针i的回溯问题 ...

最新文章

  1. barmanager 不显示_广州13.3寸广告液晶显示屏品牌排行榜
  2. 【深度学习】(6) tensorflow2.0使用keras高层API
  3. [转] React Hot Loader 3 beta 升级指南
  4. SAP MM ME21N 创建委外采购PO报错 - Not possible to determine any components - 之对策
  5. 【Vegas原创】VMWare安装Linux5的注意事项
  6. 如何删除VS2015中的OpenCV的配置
  7. 【Android 异步操作】线程池 ( 线程池使用示例 | 自定义线程池使用流程 | 自定义任务拒绝处理策略 | 完整代码示例 )
  8. html5游戏暂停按钮,HTML5 圆形进度控制(播放、暂停)按钮
  9. 类属性的特征java_java定义类、属性、方法
  10. Minimum Inversion Number HDU - 1394(权值线段树/树状数组)
  11. WORD中如何转换符号的全角半角
  12. 机器翻译市场需求调研报告
  13. 软件dfmea_DFMEA与PFMEA之间不得不说的关系
  14. ip地址聚合后可用地址数 计算机网络技术三级考试 备考
  15. yy直播插入php网页,网页YY迷你版怎么用 网页YY直播间进入方法步骤
  16. pandas学习之变形
  17. 余秋雨 成熟是一种明亮而不刺眼的光辉
  18. 移动最小二乘实现点云插值(上采样 | 增采样)详细讲解❤️❤️❤️
  19. matlab矩阵运算中“.”的使用
  20. form表单自动与手动提交

热门文章

  1. 罗赛塔科技获数百万元人民币天使轮融资
  2. Denny Zhang:一辈子做一个自由职业者
  3. mysql表单结构类型int_MySQL的数据类型和表结构
  4. 简单4步教你破解WIFI密码
  5. ARM DesignStart计划——私人定制一颗ARM处理器
  6. containsKey和containsValue
  7. 30岁,转行Python,是这辈子最成功的一件事......
  8. redis漏洞利用总结
  9. 学而思网校王闯老师简介 初中物理名师
  10. 联想笔记本电池设置只充到60%