leetcode最长回文子串_kmp算法题

leetcode最长回文子串_kmp算法题实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”, needle = “bba”输出: -1说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

实现 strStr() 函数。

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

示例 1:

输入: haystack = "hello", needle = "ll"
输出: 2
示例 2:

输入: haystack = "aaaaa", needle = "bba"
输出: -1
说明:

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

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

题解

  1. kmp算法
class Solution { 
   
public:
    void getNext(string needle,vector<int>&next){ 
   
        next[0] = -1;
        int i = -1,k = 0;
        while(k < needle.size() - 1){ 
   
            while(i != -1 && needle[k] != needle[i])i = next[i];
            if(i == -1 || needle[i] == needle[k]){ 
   
                next[++ k] = ++ i;
            }
        }
    }
    int strStr(string haystack, string needle) { 
   
        if(needle == "")return 0;
        vector<int>next(needle.size());
        getNext(needle,next);
        for(int i = 0;i < next.size();i ++){ 
   
            cout<<next[i]<<endl;
        }
        int j = 0;
        for(int i = 0;i < haystack.size();i ++){ 
   
            while(j != -1 && needle[j] != haystack[i])j = next[j];
            j ++;
            if(j == needle.size())return i - needle.size() + 1;
        }
        return -1;
    }   
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169163.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java实现Excel导入和导出,看这一篇就够了(珍藏版)

    Java实现Excel导入和导出,看这一篇就够了(珍藏版)前言最近抽了两天时间,把Java实现表格的相关操作进行了封装,本次封装是基于POI的二次开发,最终使用只需要调用一个工具类中的方法,就能满足业务中绝大部门的导入和导出需求。环境准备1.Maven依赖本次工具类的封装主要依赖于阿里巴巴的JSON包,以及表格处理的POI包,所以我们需要导入这两个库的依赖包,另外,我们还需要文件上传的相关包,毕竟我们在浏览器页面,做Excel导入时,是上传的Excel文件。<!–文件上传–><dependency>

    2022年6月28日
    129
  • 人人网面试经历「建议收藏」

    人人网面试经历「建议收藏」对于一年开发经验的程序员来说是非常尴尬的,经过一个月的面试总结,也快入职心仪的公司了,差不多算是敲定了工作。所以想到陆续的放出一些互联网公司的面试经验来,虽然面不上,但是可提供给别人参阅,以便你们遇到类似或者同一家的公司能够见招拆招!

    2022年9月7日
    2
  • Opencv学习笔记(六)SURF学习笔记

    Opencv学习笔记(六)SURF学习笔记

    2021年12月15日
    38
  • spawn ssh「建议收藏」

    spawn ssh「建议收藏」#!/usr/bin/expectsetip[lindex$argv0];setusername[lindex$argv1];setpassword[lindex$argv2];setkey_init”*yes/no*”setkey_password”[Pp]assword:”settimeout30setprompt”(#|%|\\$)

    2025年5月22日
    2
  • bcd码与十进制转换方法_5421bcd码转换十进制

    bcd码与十进制转换方法_5421bcd码转换十进制BCD码其实就是之前在数字电路中说的用4位二进制数值来表示一个0-9中的数字,例如:0000=00001=10010=20011=3也就是说如果把一个数字作为一个BCD码,例如:112

    2022年8月6日
    5
  • 最近开始研究武侠世界FLASH[通俗易懂]

    搞不懂swf文件应该是flash吧,但是用flashplayer10还打不开. 架站是成功了,登录界面却都没看明白.那个main.swf估计是登录界面,但是在哪调用的呢. 再研究一下吧.  

    2022年4月7日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号