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; }
代码说明
- 边界处理:先判断输入字符串长度,如果不足3位,返回
null(你可以根据实际需求调整,比如返回原字符串) - 初始化最大值:直接用字符串的前三位初始化,这样即使输入是特殊数字字符串(比如全负数的合法数字串)也能正确工作
- 遍历所有组合:循环从索引1开始,到
numString.length - 3结束,确保每次都能取到完整的三位连续字符 - 比较更新:每次提取子串转成整数后,和当前最大值比较,保留更大的那个
测试示例
largestThreeDigitNum("123456")→ 返回456largestThreeDigitNum("987654321")→ 返回987largestThreeDigitNum("000111222")→ 返回222
内容的提问来源于stack exchange,提问作者Beth Howell
相关产品推荐
相关产品推荐

