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

Codewars Longest Palindrome题提交返回-Infinity报错问题咨询

问题原因分析
  • 核心问题是代码执行顺序错误:你对Infinity/-Infinity的判断逻辑写在了读取str.length之后,当输入为数字类型的-Infinity时,代码会先尝试访问数字类型不存在的length属性,直接抛出类型错误,根本不会执行到你的判断分支,也就无法返回0。你本地测试如果传入的是字符串形式的'-Infinity'不会触发报错,但Codewars的测试用例传入的是数字类型的-Infinity,因此触发了该错误。
  • 潜在问题:没有提前处理非字符串类型的输入边界,输入为数字、空值等类型时,访问length都会提前抛出错误。
修复方案

仅需要把边界判断逻辑移到函数最开头即可,修改后代码如下:

function longestPalindrome(str){
  // 先做边界判断,再执行后续逻辑
  if (str === Infinity || str === -Infinity || typeof str !== 'string')  {
    return 0
  }
  var Palindromes = [], 
      reverser = i => i.split("").reverse().join(""), 
      l = str.length;

  for (let i = l ; i >= 0; i--){
    for(let j = 0; j < l; j++){
      temp = str.slice(j, i)
      if (reverser(temp) === temp){
        Palindromes.push(temp)
      }
    } 
  } 
  
  return Math.max(...Palindromes.map(e => e.length));
}
验证说明

调整后输入为数字类型的-Infinity时会直接命中判断返回0,不会触发后续的属性访问报错,同时也兼容了其他非字符串输入的边界情况,完全匹配题目测试用例要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:45:01