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

JavaScript处理HackerRank输入时多输出一个-1的问题求助

问题排查与修复

问题根源

HackerRank平台的输入通常会在最后一行末尾附带额外换行符,导致input.split("\n")生成的数组最后多出一个空字符串元素。你的代码用slice(1)截取后,会把这个空行也纳入处理,最终多输出一个-1。而Codepen的输入没有这个额外换行,所以运行正常。

另外,原代码的正则逻辑冗余且边界判断存在疏漏,比如判断首尾均为hackerrank的正则写得过于复杂,容易引发匹配歧义。

修复方案

1. 过滤空行,排除无效输入

在slice(1)之后添加过滤逻辑,去掉空行:

const processData = (input) =>
  input
    .split("\n")
    .slice(1)
    .filter(line => line.trim() !== '') // 过滤空行,避免处理无效内容
    .map((line) => {
      const startsWithHackerRank = /^hackerrank\b/.test(line);
      const endsWithHackerRank = /\bhackerrank$/.test(line);
      
      if (startsWithHackerRank && endsWithHackerRank) {
        console.log(0);
      } else if (startsWithHackerRank) {
        console.log(1);
      } else if (endsWithHackerRank) {
        console.log(2);
      } else {
        console.log(-1);
      }
    });

2. 简化逻辑,避免正则歧义

把嵌套三元表达式拆分为清晰的条件判断,用简单正则分别匹配开头和结尾:

  • ^hackerrank\b:匹配以hackerrank作为开头完整单词的行
  • \bhackerrank$:匹配以hackerrank作为结尾完整单词的行

单独一行hackerrank会同时满足两个条件,输出0,完全符合题目要求。

验证效果

用你的输入示例测试,修复后的代码会正确输出:

2
1
0
-1

在HackerRank平台也不会出现额外的-1输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:40:21