news 2026/5/12 4:17:52

豆包 LeetCode 2223. 构造字符串的总得分和 JavaScript实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
豆包 LeetCode 2223. 构造字符串的总得分和 JavaScript实现

LeetCode 2223 构造字符串的总得分和 JavaScript 版(Z 算法,O(n) 最优解)

这道题暴力匹配会直接超时(字符串长度可达 10^6),必须用Z 算法才能在 JavaScript 中通过所有用例。

题目核心

对每个下标i,计算s和后缀s[i:]最长公共前缀长度,把所有长度相加就是答案。
Z 数组的定义刚好就是这个长度,所以答案 = Z 数组求和。


JavaScript 完整可提交代码

/** * @param {string} s * @return {number} */varsumScores=function(s){constn=s.length;constZ=newArray(n).fill(0);Z[0]=n;// 整个字符串和自己匹配,长度为 nletl=0,r=0;// 维护当前最右匹配区间 [l, r]for(leti=1;i<n;i++){// 1. 利用已有的区间加速计算if(i<=r){Z[i]=Math.min(r-i+1,Z[i-l]);}// 2. 暴力扩展匹配while(i+Z[i]<n&&s[Z[i]]===s[i+Z[i]]){Z[i]++;}// 3. 更新最右区间if(i+Z[i]-1>r){l=i;r=i+Z[i]-1;}}// 求和就是答案returnZ.reduce((a,b)=>a+b,0);};

代码关键说明

1. Z 数组含义

  • Z[0] = 字符串长度(题目要求必须计入)
  • Z[i]= 字符串前缀s[0...]与后缀s[i...]最长公共前缀长度

2. 双指针优化(核心)

  • l:当前最长匹配区间的左边界
  • r:当前最长匹配区间的右边界
  • 作用:避免重复匹配,让算法从 O(n²) 降到O(n),支持 1e6 长度字符串

3. 求和

直接用reduce把 Z 数组所有值相加,就是题目要求的总得分和


复杂度

  • 时间复杂度:O(n)
  • 空间复杂度:O(n)
  • 支持 JavaScript 最大字符串限制,能完美通过所有测试用例

总结

  1. 这题本质就是求 Z 数组 + 求和
  2. 暴力解法 O(n²) 必超时,Z 算法是唯一最优解
  3. 代码是标准 Z 算法模板,可直接复用

需要我给你讲Z 算法的直观理解或者测试用例演示吗?

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/12 4:17:32

GDB太慢?试试用addr2line给你的C/C++程序做“尸检报告”

GDB太慢&#xff1f;试试用addr2line给你的C/C程序做“尸检报告” 调试C/C程序崩溃时&#xff0c;GDB无疑是功能强大的首选工具。但在生产环境中&#xff0c;当服务器负载高、资源紧张时&#xff0c;启动GDB分析core dump文件可能会显得笨重缓慢。这时&#xff0c;addr2line这个…

作者头像 李华
网站建设 2026/5/12 4:12:33

STM32 低功耗停机模式(STOP)中断唤醒实战:从基础配置到抗干扰优化

1. STM32低功耗停机模式基础解析 第一次接触STM32的低功耗模式时&#xff0c;我被官方手册里各种模式的电流参数惊到了——STOP模式下某些型号居然能做到1μA以下的待机电流&#xff01;这意味着用纽扣电池就能让设备运行数年。但真正在项目中使用时&#xff0c;发现从低功耗唤…

作者头像 李华
网站建设 2026/5/12 4:11:31

阿里:时序课程解决多轮蒸馏不稳定

&#x1f4d6;标题&#xff1a;TCOD: Exploring Temporal Curriculum in On-Policy Distillation for Multi-turn Autonomous Agents &#x1f310;来源&#xff1a;arXiv, 2604.24005v3 &#x1f6ce;️文章简介 &#x1f538;研究问题&#xff1a;如何在多轮自主智能体场景中…

作者头像 李华
网站建设 2026/5/12 4:08:08

Cursor编辑器Markdown规则集:AI生成文档自动化格式规范指南

1. 项目概述&#xff1a;一个为 Cursor 编辑器定制的 Markdown 规则集 如果你和我一样&#xff0c;日常重度依赖 Cursor 这款 AI 驱动的代码编辑器&#xff0c;并且经常需要编写大量的技术文档、项目 README 或者技术博客&#xff0c;那你一定遇到过这样的痛点&#xff1a;AI …

作者头像 李华
网站建设 2026/5/12 4:07:33

AI代理主机安全基线检查:Clawkeeper工具实战指南

1. 项目概述&#xff1a;为什么你的AI代理主机需要“守门人” 如果你正在或计划在生产环境的真实机器上部署AI代理&#xff0c;无论是用于自动化工作流、数据分析还是客户服务&#xff0c;那么你很可能正面临一个被绝大多数开发者忽视的“定时炸弹”&#xff1a;主机安全。我们…

作者头像 李华