当前位置: 首页 > news >正文

千问 LeetCode 2781. 最长合法子字符串的长度 JavaScript实现

这是 LeetCode 2781 题“最长合法子字符串的长度”的 JavaScript 版本实现。思路和 Java 版完全一致,依然采用双指针(滑动窗口)+ 逆向枚举的方法。

JavaScript 代码实现

/**
* @param {string} word
* @param {string[]} forbidden
* @return {number}
*/
var longestValidSubstring = function(word, forbidden) {
// 将 forbidden 数组存入 Set,实现 O(1) 时间复杂度的查找
const set = new Set(forbidden);

const n = word.length;
let ans = 0;
let left = 0;

// right 指针不断向右扩展
for (let right = 0; right < n; right++) {
// 从当前 right 位置开始,倒着往前最多检查 10 个字符
// 因为 forbidden 中最长的字符串长度只有 10
for (let i = right; i >= left && i > right - 10; i--) {
// 截取子串 word[i...right]
const sub = word.substring(i, right + 1);
if (set.has(sub)) {
// 如果发现了非法子串,左指针必须收缩到该非法子串的右侧
left = i + 1;
// 找到一个非法的就可以停止了,因为我们要找的是最靠左的冲突点来更新 left
break;
}
}
// 更新最长合法子字符串的长度
ans = Math.max(ans, right - left + 1);
}

return ans;
};

复杂度分析
* 时间复杂度:O(N)。虽然代码中有一个嵌套的 for 循环,但由于 forbidden 字符串的最大长度限制为 10,内层循环最多只会执行 10 次(常数级别)。因此,整体时间复杂度取决于外层 right 指针的遍历,即 O(N),其中 N 是 word 的长度。
* 空间复杂度:O(M)。我们需要一个哈希集合(Set)来存储 forbidden 数组中的字符串,其中 M 是 forbidden 数组中所有字符串的总长度。

http://www.jsqmd.com/news/900463/

相关文章:

  • 别再死记公式了!用Python的NumPy和Pandas实战理解样本均值、方差与中心矩
  • 基于 HarmonyOS 6.0 的日程备忘应用页面构建:深色主题与数据看板设计详解
  • CPT Markets:从账户流程看服务细节与效率
  • 从CentOS Stream 8的坑说起:一次GitLab SSH密钥认证失败的完整排错实录
  • 告别Keil!在Ubuntu 20.04上用VSCode+GCC玩转国产HC32L110单片机
  • IR/EM:芯片性能与可靠性的隐形杀手
  • Qwen模型 Max LeetCode 2790. 长度递增组的最大数目 TypeScript实现
  • 2026年当前武汉专业复印纸公司深度解析与选择指南 - 2026年企业资讯
  • ManySpeech-CLI:开箱即用的本地命令行语音识别工具
  • AI工具集:本地Node基于云端AI模型使用Stdio封装自定义MCP服务
  • 基于断言与故障分析的RTL级近似计算自动化探索方法
  • 为什么你的ChatGPT健身计划总失败?运动生理学博士揭穿5大AI认知盲区,附可立即复用的Prompt黄金模板
  • Linux内核开发者视角:深入SMMUv3驱动,手把手拆解dma_map_sg()的IOVA连续映射魔法
  • 如何快速轻松地删除 iPhone/iPad 上的提醒事项
  • 国产第一!Qwen3.7-Max全端上线,好易智算同步首发,企业级Agent底座再添新选择
  • 收藏 | RAG技术揭秘:让AI回答更靠谱,小白也能轻松上手学大模型!
  • 5G毫米波信道模型对比:3GPP与NYUSIM如何影响系统设计与性能评估
  • 别再乱选电容了!手把手教你搞定阻容降压电路,从0.47uF到安规X2电容的保姆级选型指南
  • 避坑指南:你的PLS-DA结果可靠吗?聊聊mixOmics包里的scale、logratio与near.zero.var参数设置
  • 面壁开源1B端侧模型,AI Yang的“端云协同”路线得到验证
  • 基于 HarmonyOS 6.0 的日程备忘应用:时间线组件与任务状态管理详解
  • 基于OpenCL的FPGA信号处理:低延迟流水线设计与工程实践
  • 别再只盯着准确率了!手把手教你用Python计算语义分割的MIoU(附完整代码)
  • 抖音无水印下载:从手动保存到自动化批量采集的终极方案
  • 无广告免费壁纸工具,手机电脑壁纸随心更换
  • 大模型下半场:从“模型能力”到“系统能力”,RAG、Agent如何重塑产业竞争格局?
  • C语言中求余运算符的使用解读
  • AI应用可观测性工程2026:LLM调用追踪评估与监控全栈实践
  • 保姆级教程:用CAT_pack和IMG/VR4数据库搞定宏基因组contig物种分类(附蛋白ID与TaxID映射避坑指南)
  • 跨越十个数量级的能效革命:从GPU到忆阻器,神经计算硬件的能耗全景与路径选择