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

JavaScript技术实现:从数字字符串中提取最大连续三位数字

修正你的JavaScript连续三位最大数字函数

嘿,我来帮你搞定这个函数!你的原代码逻辑其实完全没抓住需求的核心——它并没有真正提取连续的三位数字来比较大小,咱们一步步来修正:

原代码的问题点

  • 没有处理连续三位的逻辑:原循环只是逐个检查单个字符,完全没考虑从当前索引开始取后续两位组成三位数
  • 类型与逻辑错误:numString[i] === largestNumber 是把字符串字符和数字直接比较(类型不匹配),而且largestNumber++这种操作和找最大三位数的需求完全不沾边
  • 初始值的局限性:如果输入的数字字符串全是比0小的数(虽然题目说是数字字符串,大概率是正数,但严谨性不够),初始值设为0会出错

修正后的代码

function largestThreeDigitNum(numString) {
  // 先处理输入长度不足3的情况,这里返回null,你也可以按需改成返回原字符串
  if (numString.length < 3) {
    return null;
  }

  // 用第一个三位数字初始化最大值,避免初始值0带来的问题
  let largest = parseInt(numString.slice(0, 3), 10);

  // 遍历所有可能的连续三位组合,i的上限是length-3,确保能取到三个字符
  for (let i = 1; i <= numString.length - 3; i++) {
    // 提取当前连续三位并转成数字
    const currentThreeDigit = parseInt(numString.slice(i, i + 3), 10);
    // 如果当前数更大,更新最大值
    if (currentThreeDigit > largest) {
      largest = currentThreeDigit;
    }
  }

  return largest;
}

代码说明

  1. 边界处理:先判断输入字符串长度,如果不足3位,返回null(你可以根据实际需求调整,比如返回原字符串)
  2. 初始化最大值:直接用字符串的前三位初始化,这样即使输入是特殊数字字符串(比如全负数的合法数字串)也能正确工作
  3. 遍历所有组合:循环从索引1开始,到numString.length - 3结束,确保每次都能取到完整的三位连续字符
  4. 比较更新:每次提取子串转成整数后,和当前最大值比较,保留更大的那个

测试示例

  • largestThreeDigitNum("123456") → 返回 456
  • largestThreeDigitNum("987654321") → 返回 987
  • largestThreeDigitNum("000111222") → 返回 222

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:58:48