首页 > 其他分享 >28. 找出字符串中第一个匹配项的下标 2

28. 找出字符串中第一个匹配项的下标 2

时间:2023-11-13 22:23:26浏览次数:33  
标签:下标 charAt int needle 28 ++ 字符串 haystack pi

2023-11-13

28. 找出字符串中第一个匹配项的下标 - 力扣(LeetCode)

思路2:kmp算法-》求字符串的最大前后缀长度问题

class Solution {
    public int strStr(String haystack, String needle) {
        //暴力法
        //双指针
        //kmp算法
 
        //kmp
        int n = haystack.length(), m = needle.length();
        if (m == 0) {
            return 0;
        }
        int[] pi = new int[m];
        for (int i = 1, j = 0; i < m; i++) {
            while (j > 0 && needle.charAt(i) != needle.charAt(j)) {
                j = pi[j - 1];
            }
            if (needle.charAt(i) == needle.charAt(j)) {
                j++;
            }
            pi[i] = j;
        }
        for (int i = 0, j = 0; i < n; i++) {
            while (j > 0 && haystack.charAt(i) != needle.charAt(j)) {
                j = pi[j - 1];
            }
            if (haystack.charAt(i) == needle.charAt(j)) {
                j++;
            }
            if (j == m) {
                return i - m + 1;
            }
        }
        return -1;
 
 
 
    }
}

 

标签:下标,charAt,int,needle,28,++,字符串,haystack,pi
From: https://www.cnblogs.com/youye9527/p/17830420.html

相关文章

  • 8--283. 移动零
    给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例1:输入:nums=[0,1,0,3,12]输出:[1,3,12,0,0]示例2:输入:nums=[0]输出:[0]classSolution{public......
  • C++ 字符串类 string
    @TOC前言在C++中,字符串是一种常见的数据类型,用于存储和操作文本数据。C++标准库中提供了std::string类,它是一个功能强大的字符串类,提供了丰富的方法和操作符,使我们能够轻松地处理字符串。一、string类型概括std::string是C++标准库中定义的字符串类,它在<string>头文件中声明。它......
  • UVA11282 题解
    题意简述Kelly寄出去\(n\)封邀请函,但她希望只有小于等于\(m\)个人收到他们自己的邀请函(即有至少\(n-m\)个人收到了别人的邀请函)。思路形成容易发现,这道题是一个典型的错排题,我们只需要分别求出\(n-m\)个元素到\(n\)个元素的错排即可。接下来为错排的推导,我们令\(f......
  • 字符串的相关操作
    字符串切记,字符串是不可变对象,所以任何操作对原字符串不会有任何影响。一,字符串的大小写1s="jikn"2s.capitalize()3print(s)#输出发现并没有任何的变化.因为这⾥的字符串本身是不会发⽣改变的.需要我们重新获取45s1=s.capitalize()#将首字母大写,感觉......
  • mysql函数(二)之常见的字符串函数
    mysql常见字符串函数MySQL提供了许多用于处理字符串的函数,以下是一些常见的字符串函数及其作用:一、常用字符串函数CHAR_LENGTH(s);返回字符串s的字符数SELECTCHAR_LENGTH("abcdefg");->7//返回字符串abcdefg的字符数 CONCAT(s1,s2…sn);字符串s1,s2等多个字符串......
  • mysql函数(二)之常见字符串函数
    1、CONCAT(str1,str2,…)函数CONCAT()将多个字符串连接成一个字符串,如果该函数中的任何参数为NULL,返回结果为NULL,使用示例如下: 2、SUBSTRING(str,pos,len)函数SUBSTRING()从字符串中提取子字符串,起始位置为pos,长度为len,使用示例如下: 3、REPLACE(str,from_str,to_str......
  • 全志R128应用开发案例——获取真随机数
    获取真随机数本文案例代码下载地址获取真随机数案例代码https://www.aw-ol.com/downloads?cat=24R128内置了TRNG,一个真随机数发生器,随机源是8路独立的环形振荡器,由模拟器件电源噪声产生频率抖动,用低频始终重采样,然后进行弹性抽取和熵提取处理,最终输出128bit真随......
  • GB28181/GB35114国标平台LiveGBS适配国产信创环境,使用国产数据库达梦数据库、高斯数据
    1、如何配置切换信创达梦数据库?livecms.ini->[db]下面添加配置如:...[db]dialect=dmurl=dm://SYSDBA:Aa12345678@localhost:5236/livegbs2、如何配置切换高斯数据库?livecms.ini->[db]下面添加配置如:...[db]dialect=gaussurl=host=192.168.2.153port=5432user=l......
  • 国标GB28181视频平台EasyCVR级联后上级平台不显示通道的原因是什么?
    EasyCVR是一个功能强大的视频平台,能够在复杂的网络环境中统一汇聚、整合和集中管理各种类型的前端监控设备。支持的协议包括国标GB/T28181、RTMP、RTSP/Onvif等以及海康大华的私有协议与SDK。平台提供直播、录像、告警、级联和对讲等视频功能。有用户反馈称,EasyCVR成功地将自身级......
  • [题解]AT_abc328_f [ABC328F] Good Set Query
    思路带权并查集模板。如果对于一个三元组\((a,b,c)\)如果它能够添加到\(S\)中一定满足如下条件中的一条:\(X_a,X_b\)满足其中有一个是「不确定」的。在这里\(X_i\)「不确定」指\(X_i\)没有与其它的任意\(X_j\)有关系。\(X_a,X_b\)有间接或直接的关系,但是能计算......