You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode最长回文子串C++代码出现数组越界Runtime Error求助

为什么C++中"" + s[i]会触发数组越界错误?

错误根源

你遇到的index 98 out of bounds问题,核心是C++和Python对字符串拼接的底层逻辑完全不同:

  • 在C++里,""是**const char[1]类型的字符串字面量**,本质是指向仅包含终止符'\0'的字符数组的指针。
  • 执行"" + s[i]时,s[i]作为char类型会被隐式转换成对应的ASCII整数值(比如字符'b'的ASCII是98),此时操作变成指针加法:把""的起始地址加上这个整数值,直接跳到了数组边界外的内存区域,触发越界错误。

而Python里的""是字符串对象,+操作符会自动将字符转为字符串再拼接,所以不会出现这类问题。

修复方法

把第8行代码改成以下任意一种写法即可:

  1. 用string构造函数直接初始化:
string current(1, s[i]);
  1. 先创建空字符串再追加字符:
string current;
current += s[i];
  1. 显式将char转为string:
string current = string(1, s[i]);

额外提示

你的内层循环用j = len跳出的写法不符合C++规范,建议换成break提升可读性;同时注意current = s[i-j] + current + s[i+j]也存在类似问题,需要把单个char转成string再拼接:

if (i+j >= len || i-j < 0 || s[i-j] != s[i+j])
    break;
else 
    current = string(1, s[i-j]) + current + string(1, s[i+j]);

内容的提问来源于stack exchange,提问作者Hunter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 10:03:15