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 ;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)