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

Codesignal最长单词任务代码仅过9/10测试,求排查原因

问题分析与修正方案

你的代码问题出在正则表达式的选择上:

  • 你用的/\w+/g中,\w在JavaScript正则里代表字母、数字、下划线(等价于[A-Za-z0-9_]),不符合题目里"单词是连续英文字母序列"的定义。
  • 在测试用例"ab-CDE-fg_hi"中,这个正则会把fg_hi识别成一个完整单词(长度5),但实际上下划线不属于字母,fg和hi是两个独立的短单词,此时最长的纯字母单词是CDE(长度3),这就是你的代码和预期输出不符的原因。

修正后的代码

把正则替换为仅匹配大小写英文字母的/[a-zA-Z]+/g,就能正确提取所有符合要求的单词:

function solution(text) {
 let words = text.match(/[a-zA-Z]+/g);
    
    let ml = Math.max(...words.map(el=>el.length))
    
    for(let i = 0; i < words.length; i++){
        if(words[i].length == ml){
            return words[i]
        }
    }
}

额外说明

  • 这个正则会精准匹配所有连续的英文字母序列,不管大小写,完全符合题目对"单词"的定义。
  • 若输入字符串可能不存在任何字母,match会返回null,此时Math.max会报错,但题目应该保证输入至少包含一个单词,所以暂时无需处理该边界场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 11:43:20