leetcode最长回文子串_leetcode反转链表

leetcode最长回文子串_leetcode反转链表实现 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;
    }   
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168881.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python中类(class)

    python中类(class)"""面向过程和面向对象(oop:objectorientedprogramming)的基本概念面向过程:—侧重于怎么做?1.把完成某一个需求的所有步骤从头到尾逐步实现2.根据开发要求,将某些功能独立的代码封装成一个又一个函数3.最后完成的代码,就是顺序的调用不同的函数特点:1.注重步骤与过程,不注重职责分工2.如果需求复杂,代码会变得很复杂3.开发复杂项…

  • quartus波形仿真破解MODELSIM「建议收藏」

    quartus波形仿真破解MODELSIM「建议收藏」(1)对于Quartus14.0安装时自动安装了modelsim的ae和ase两个版本,分别位于D:\ProgramFiles\altera\14.0\modelsim_ase和D:\ProgramFiles\altera\14.0\modelsim_ae目录下(根据自己的安装路径而定)。其中ae是免费的,包含有altera的FPGA芯片,而ase除了altera的外,还有xilinx的,库更…

  • 重建二叉树(Java)

    重建二叉树(Java)题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。链表的结点定义如下:structListNode{ intm_nKey; ListNode*m_pNext;}第一思路:我的第一思路是从头到尾输出类比数组那样,于是乎想把链表中的链表结点的指针反转过来,改变链表的方向,然后实现从头到尾输出(结果为从尾到头输出),可是发现修改链表的指针,反转链表的结构比较麻烦。于是乎放弃。最优…

  • Makefile教程(绝对经典,所有问题看这一篇足够了)「建议收藏」

    Makefile教程(绝对经典,所有问题看这一篇足够了)「建议收藏」该篇文章为转载,是对原作者系列文章的总汇加上标注。支持原创,请移步陈浩大神博客:http://blog.csdn.net/haoel/article/details/2886makefile很重要   什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefil…

  • c++ sort 二维数组排序_二维数组升序排列

    c++ sort 二维数组排序_二维数组升序排列以往遇到行排列问题(按每行的字典序排序)的时候,总是使用结构体来进行排序,但是如何使用二维数组来达到同样的效果呢?实验内容:利用二维数组进行“三级排序”测试1:使用c++内置的普通型二维数组#include&lt;algorithm&gt;#include&lt;iostream&gt;usingnamespacestd;boolcmp(inta[],intb[]){ …

  • 轻量级MVVM框架Stylet介绍:(3)关于Bootstrapper「建议收藏」

    轻量级MVVM框架Stylet介绍:(3)关于Bootstrapper「建议收藏」Bootstrapper负责引导应用程序,用于配置IoC容器,创建根ViewModel的新实例,并使用显示WindowManager出来。它还提供了各种其他功能,如下所述。引导程序有两种风格

发表回复

您的电子邮箱地址不会被公开。

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