leetcode28. 实现 strStr()-java实现

题目所属分类

典型的KMP算法

原题链接

实现 strStr() 函数。

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。

说明:

当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。

对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。

代码案例:输入:haystack = “hello”, needle = “ll”
输出:2

题解

就是KMP模板题算
详情请点击 这里 !!!!!!!!!
就是求next 数组
然后下来是匹配问题

class Solution {
    public int strStr(String s1, String p1) {
        if(p1.isEmpty()) return 0 ;
      char[] p = (" " + p1 ).toCharArray();
      char[] s = (" " + s1).toCharArray();
        
        int n = s1.length()  , m = p1.length()  ;
        int[] ne = new int[m+1];
        for(int i = 2,j=0 ; i <= m ;i++){
            while(j != 0 && p[i]!= p[j+1]) j = ne[j];
            if(p[i] == p[j+1]) j++;
            ne[i]= j;
        }
        for(int i = 1,j=0; i<= n ;i++){
            while(j != 0 && s[i] != p[j+1]) j = ne[j];
            if(s[i] == p[j+1])j++;
            if(j == m){
                return i- j ;
            }
             
        }
        return -1 ;
    }
}
posted @   依嘫  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示