纪录一下力扣28题越界的问题

2023-11-20

@[TOC] 记录一下力扣28题用严蔚敏教材中的kmp求解出现的问题

ERROR42

不用怀疑数组越界了
贴上源码我们来分析一下

class Solution {
public:
	void getNext(vector<int> &next,string needle){
        int i=0,j=-1;
        next[0]=-1;
        while(i<needle.size()){
            if(j==-1||needle[i]==needle[j]){
                i++;//加了之后,可能会导致最后一次越界
                j++;
                next[i]=j;
            }
            else{
                j=next[j];
            }
        }
    }
    int strStr(string haystack, string needle) {
        int m=needle.length(),n=haystack.length();
        if(m>n)
            return -1;
        vector<int> next(m,0);
        getNext(next,needle);
        int i=-1,j=-1;
        while(i<n&&j<=m-1){
        	if(j==-1||needle[j]==haystack[i]){
        		i++;
        		j++;
        	}
        	else{
        		j=next[j];
        	}
        }
        if(j==m)
        	return i-m;
        return -1;
    }
};

出问题的地方在这里
导致越界的地方
可能在手推的时候最后一轮发现没有问题就停止了。
事实上最后一轮,之后还有一轮,会立刻导致越界
测试needleissip
长度为5,下标从0开始
当我们函数执行到给next[4]赋值时
此时的i是符合 while的循环条件的
因为i=4 <5
这时候会进入while导致出现一次
i++

此时 i=5
紧接着会执行next[5]=j
发生越界!
记录一下问题,与诸君共勉。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

纪录一下力扣28题越界的问题 的相关文章

  • 具有不同大小结构的结构数组的 malloc()

    如果每个结构都包含一个大小不同的字符串数组 那么如何正确地 malloc 一个结构数组 因此每个结构可能有不同的大小 并且不可能 realloc 结构体数量 sizeof 结构体名称 after malloc 初始大小 sizeof 结构名
  • 分段错误(核心转储)错误

    我的程序编译罚款 但在输入文件时出现 分段错误 核心转储 错误 我没有正确处理 ostream 吗 include
  • 如何尝试/捕获所有异常

    我正在完成由其他人启动的 UWP 应用程序 该应用程序经常崩溃 我总是陷入困境应用程序 at if global System Diagnostics Debugger IsAttached global System Diagnostic
  • 如何创建用于 QML 的通用对象模型?

    我想知道是否有任何宏或方法如何将 Qt 模型注册为 QObject 的属性 例如 我有AnimalModel http doc qt io qt 5 qtquick modelviewsdata cppmodels html qabstra
  • HttpWebRequest vs Webclient(特殊场景)

    我知道这个问题之前已经回答过thread https stackoverflow com questions 1694388 webclient vs httpwebrequest httpwebresponse 但我似乎找不到详细信息 在
  • 从 Code::Blocks 运行程序时出现空白控制台窗口 [重复]

    这个问题在这里已经有答案了 当我尝试在 Code Blocks 中构建并运行新程序时 控制台窗口弹出空白 我必须单击退出按钮才能停止它 它对我尝试过的任何新项目 包括 Hello world 都执行此操作 奇怪的是 它对于我拥有的任何旧项目
  • 为什么 clang 使用 -O0 生成低效的 asm(对于这个简单的浮点和)?

    我正在 llvm clang Apple LLVM 版本 8 0 0 clang 800 0 42 1 上反汇编此代码 int main float a 0 151234 float b 0 2 float c a b printf f c
  • 使用 WF 的多线程应用程序的错误处理模式?

    我正在写一个又长又详细的问题 但只是放弃了它 转而选择一个更简单的问题 但我在这里找不到答案 应用程序简要说明 我有一个 WPF 应用程序 它生成多个线程 每个线程执行自己的 WF 处理线程和 WF 中的错误 允许用户从 GUI 端进行交互
  • C++ 错误 - “成员初始值设定项表达式列表被视为复合表达式”

    我收到一个我不熟悉的 C 编译器错误 可能是一个非常愚蠢的错误 但我不能完全指出它 Error test cpp 27 error member initializer expression list treated as compound
  • 分配器感知容器和propagate_on_container_swap

    The std allocator traits模板定义了一些常量 例如propagate on container copy move assign让其他容器知道它们是否应该在复制或移动操作期间复制第二个容器的分配器 我们还有propag
  • C++11 动态线程池

    最近 我一直在尝试寻找一个用于线程并发任务的库 理想情况下 是一个在线程上调用函数的简单接口 任何时候都有 n 个线程 有些线程比其他线程完成得更快 并且到达的时间不同 首先我尝试了 Rx 它在 C 中非常棒 我还研究了 Blocks 和
  • 为什么要在 C++ 中使用 typedef?

    可以说我有 set
  • DataTable:通过 LINQ 或 LAMBDA 进行动态 Group By 表达式

    我有一个数据表 我想在其中对未指定数量的字段进行分组 发生这种情况的原因是用户可以选择他想要分组的字段 所以 实际上 我将选择推入列表中 在这个选择上 我必须对我的数据表进行分组 想象一下这段代码 VB 或 C 都一样 public voi
  • ASP.NET JQuery AJAX POST 返回数据,但在 401 响应内

    我的应用程序中有一个网页 需要调用我设置的 Web 服务来返回对象列表 这个调用是这样设置的 document ready function var response ajax type POST contentType applicati
  • 0-1背包算法

    以下 0 1 背包问题是否可解 浮动 正值和 浮动 权重 可以是正数或负数 背包的 浮动 容量 gt 0 我平均有 这是一个相对简单的二进制程序 我建议用蛮力进行修剪 如果任何时候你超过了允许的重量 你不需要尝试其他物品的组合 你可以丢弃整
  • 初始化 LPCTSTR /LPCWSTR [重复]

    这个问题在这里已经有答案了 我很难理解并使其正常工作 基本上归结为我无法成功初始化这种类型的变量 它需要有说的内容7 2E25DC9D 0 USB003 有人可以解释 展示这种类型的正确初始化和类似的值吗 我已查看此站点上的所有帮助 将项目
  • Visual Studio 2017 完全支持 C99 吗?

    Visual Studio 的最新版本改进了对 C99 的支持 最新版本VS2017现在支持所有C99吗 如果没有 C99 还缺少哪些功能 No https learn microsoft com en us cpp visual cpp
  • 以 UTF8 而不是 UTF16 输出 DataTable XML

    我有一个 DataTable 我正在使用 WriteXML 创建一个 XML 文件 尽管我在以 UTF 16 编码导出它时遇到问题 并且似乎没有明显的方法来更改它 我了解 NET 在字符串内部使用 UTF 16 这是正确的吗 然后 我通过
  • C#中为线程指定特殊的cpu

    我有 2 个线程 我想告诉其中一个在第一个 cpu 上运行 第二个在第二个 cpu 上运行 例如在具有两个 cpu 的机器中 我怎样才能做到这一点 这是我的代码 UCI UCIMain new UCI Thread UCIThread ne
  • 如何使用 C# 以低分辨率形式提供高分辨率图像

    尝试使用 300dpi tif 图像在网络上显示 目前 当用户上传图像时 我正在动态创建缩略图 如果创建的页面引用宽度为 500x500px 的高分辨率图像 我可以使用相同的功能即时转换为 gif jpg 吗 将创建的 jpg 的即将分辨率

随机推荐

  • Unity3D如何修改Button显示的文字以及深入了解Button组件

    在创建了一个Button后 结构如图 先仔细观察一下Button的Inspector视图 发现其中竟然有一个叫Button的脚本组件 新建脚本 代码如下 并将该脚本绑定给Canvas组件 using UnityEngine UI using
  • winform记录

    SpeechSynthesizer 下边代码多次调用 会导致内存溢出outofmemory SpeechSynthesizer 需要改为全局静态 private void button Click object sender EventAr
  • 【MySQL笔记】MySQL8新特性 — 计算列

    什么叫计算列呢 简单来说就是某一列的值是通过别的列计算得来的 例如 a 列值为 1 b 列值为 2 c 列不需要手动插入 定义 a b 的结果为 c 的值 那么 c 就是计算列 是通过别的列计算得来的 在 MySQL 8 中 CREATE
  • Pytorch Torch.utils.data.Sampler

    对于 可迭代样式的数据集 数据加载顺序完全由用户定义的可迭代样式控制 这样可以更轻松地实现块读取和动态批处理大小 例如 通过每次生成一个批处理的样本 为了从数据集中读取数据 pytorch提供了Sampler基类与多个子类实现不同方式的数据
  • 天刀服务器维护4月19,5月19日服务器例行维护公告

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 亲爱的玩家 青龙乱舞区 大地飞鹰区 沧海云帆区 把酒邀月区全部服务器将在5月19日6 00 10 00停机维护更新 维护完成后上述各服务器客户端版本更新至2 1 47 18 由于机房网络波动 云
  • 【数字IC】从零开始的Verilog SPI设计

    从零开始的Verilog SPI协议设计 一 写在前面 1 1 协议标准 1 2 数字IC组件代码 1 3 设计要求 1 4 其他协议解读 1 4 1 UART协议 1 4 2 SPI协议 1 4 3 I2C协议 1 4 4 AXI协议 二
  • BLIP论文笔记

    BLIP Bootstrapping Language Image Pre training for Unified Vision Language Understanding and Generation Abstract 1 Intro
  • 在封装或使用el-dialog的时候无法获取到 $refs的坑

    经常使用 vue 的对element ui都不陌生 他的el dialog弹框组件为了性能的提升 第一次打开之前是不会渲染body内容的 这样子将会导致一个问题 我们无法获取到 dom 解决方法 方法一 因为源码是通过rendered 参数
  • 2021全国电设(F题)openmv的图像识别之数字识别

    基于openmv的图像识别 通过参加全国电子设计大赛F题总结出openmv4的数字识别 其它版本暂时没试过 欢迎交流 openmv简介 OpenMV是一个开源 低成本 功能强大的机器视觉模块 以STM32F427CPU为核心 集成了OV77
  • py214-基于Python+django的网购平台购物商城

    开发语言 Python python框架 django 软件版本 python3 7 python3 8 数据库 mysql 5 7或更高版本 数据库工具 Navicat11 开发软件 PyCharm vs code 前端框架 vue js
  • C++ 代码实现定义法计算行列式的值

    一 前言 最近在捣鼓C 学到线代的行列式之后就想着来捣鼓一下求行列式的值 主要原因是当时群里有人在捣鼓着用上下三角来求值 所以我最后就去玩定义法求值了 二 n阶行列式的定义 从定义中我们可以看出值计算公式由三个部分组成 分别是逆序数r 行列
  • C++基础知识 - 赋值构造函数

    赋值构造函数 如果没有定义赋值构造函数 编译器会自动定义 合成的赋值构造函数 与其他合成的构造函数 是 浅拷贝 又称为 位拷贝 定义 Human operator const Human other 实现 Human Human opera
  • MySQL数据库提示:Communications link failure,The last packet succe

    Last modified 2013 10 08 14 16 47 web网站使用MySQL数据库 今天突然报以下错误 Communications link failure The last packet successfully rec
  • html+css小名片代码

    作者 小刚 一位苦于信息安全的萌新小白帽 记得关注给个赞 谢谢 本实验仅用于信息防御教学 切勿用于其它用途 HTML css小名片效果 效果图 小名片代码 学习html css时做的小名片案例 效果图 鼠标移动到名片前 鼠标移动到名片后 小
  • STM32 电机教程 0 - MotorControl Workbench下载与安装

    前言 STM32微控制器提供了行业标准Arm Cortex M核心运行矢量控制或FOC模式的性能 广泛应用于空调 家用电器 无人机 建筑和工业自动化 医疗和电动自行车应用的高性能驱动器 STM32 MCSDK 电机控制软件开发工具包 固件
  • 扩散模型:Diffusion models as plug-and-play priors作为即插即用先验的扩散模型

    扩散模型 Diffusion models as plug and play priors作为即插即用先验的扩散模型 0 摘要 1 概述 2 方法 2 1 问题设置 2 2 将去噪扩散概率模型作为先验 3 实验 图像生成 3 1 MNIST
  • 搜狐畅游2018年9月15日校招真题(1)

    通过该道题目 题目描述如下 示例代码 include
  • mysql jdbc allow_mysql的jdbc.url携带allowMultiQueries=true参数的作用及其原理

    如下配置 jdbc url jdbc mysql 127 0 0 1 3306 chubb 2 autoReconnect true useUnicode true characterEncoding UTF 8 allowMultiQue
  • VMware 7.0

    在 vSphere 7 0 中 可以利用 vSphere Client HTML5 中提供的功能 基于 Flash 的 vSphere Web Client 已弃用且不再提供 VMware Host Client 是一个基于 Web 的应用
  • 纪录一下力扣28题越界的问题

    TOC 记录一下力扣28题用严蔚敏教材中的kmp求解出现的问题 ERROR42 不用怀疑数组越界了 贴上源码我们来分析一下 class Solution public void getNext vector