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/168723.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月8日 下午3:16
下一篇 2022年8月8日 下午3:36


相关推荐

  • IDEA 非maven项目打jar包(包含第三方依赖包)

    IDEA 非maven项目打jar包(包含第三方依赖包)**IDEA非maven项目打jar包**普通java项目打JAR包方式(包含第三方依赖包):①在保证程序能运行情况下:②③④***最后就生成JAR包了在相应文件夹下运行控制台命令java-jar.jar就可以运行了…

    2022年6月19日
    75
  • jeesite集成cas认证[通俗易懂]

    jeesite集成cas认证[通俗易懂]cas和shiro集成,很好的解决了登录及权限问题。本人最近第一次使用,框架使用的是jeesite开源框架,本身已经集成了shiro,现在将cas集成到项目中。折腾了三天,终于把cas集成到jeesite中。现将集成过程写下,供朋友参考。本项目集成cas的同时还留有登录入口,此时需要多种认证方式,步骤6、7的设置就是针对这个功能的,如不需要可直接跳过。1、添加cas的maven依赖。

    2022年6月15日
    46
  • stringbuild和stringbuffer的区别_string和stringbuilder的区别

    stringbuild和stringbuffer的区别_string和stringbuilder的区别JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据.这个String类提供了数值不可改变的字符串.而这个StringBuffer类提供的字符串进行修改.当你知道字符数据要改变的时候你就可以使用 StringBuffer.典型地,你可以使用 StringBuffers来动态构造字符数据.一、String的使用方法:

    2026年2月8日
    6
  • 行列式的计算技巧与方法总结[通俗易懂]

    行列式的计算技巧与方法总结[通俗易懂]行列式的计算技巧与方法总结

    2022年8月2日
    7
  • java分页计算_java分页算法「建议收藏」

    java分页计算_java分页算法「建议收藏」关键字:j2ee网页struts分页算法/***分页算法*/packagecn.eshore.user.util;publicclassPageBean{privateintcurrentPage=1;//当前页数publicinttotalPages=0;//总页数privateintpageSize=0;//每页显示数privateintto…

    2022年10月3日
    4
  • java SimpleDateFormat设置时区格式化时间

    java SimpleDateFormat设置时区格式化时间前情提要在 Android 开发中经常遇到有的接口需要上传当前时间 如果后台要求直接传一个 long 类型的时间戳还好 因为这个时间戳是跟时区无关的 如果后台接口要求传的是格式化的时间 若本地设备设置的时区与后台要就的时区不一致 就会导致上传的时间不准确 有问题的写法这种写法 SimpleDateFo 默认用的是本地设备设置的时区 若本地时区与后代约定的不一致就会导致问题 Simple

    2026年3月19日
    2

发表回复

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

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