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

Hackerrank中grep命令执行结果与本地Bash不一致原因问询

Hackerrank Shell题grep执行结果不一致问题解答

环境差异说明

Hackerrank的Shell运行环境和本地GNU/Linux Bash环境确实存在差异,核心差异点如下:

  • 工具链版本差异:Hackerrank的Shell题型默认使用的GNU grep版本为3.1,和多数新版GNU/Linux发行版自带的grep 3.7+版本存在语法支持差异;部分早期上线的Shell题会调用BSD grep工具链,对POSIX正则的扩展特性支持不完全,比如[[:space:]]字符类在ERE模式下的零宽匹配逻辑和GNU grep有明显区别。
  • 输入预处理差异:Hackerrank平台会自动对测试输入做标准化处理,默认会把制表符替换为半角空格、裁剪行尾多余空白符,和你本地测试用的原始输入文件可能存在隐性的格式差异。
  • 提交规则限制:本次涉及的grep考点题明确要求提交内容为正则表达式参数,不需要写完整的grep -E前缀,如果你直接提交完整命令,平台会把整条命令当作正则参数传入默认的grep调用,自然会得到错误结果。

结果不一致的核心原因

你编写的正则([0-9])([[:space:]]*)\1本身逻辑是匹配两个相同数字中间存在0个或多个空白字符,存在两个不符合要求的问题:

  1. 若你提交了完整的grep -E 'xxx'命令,不符合平台提交规则,会直接触发执行错误。
  2. 题意要求匹配的是相邻或者仅间隔1个空格的重复数字,你使用的*量词会匹配中间存在多个空格的情况,不符合测试用例的判定规则,会触发匹配错误。

修复方案

如果平台要求提交完整grep命令,可使用如下写法:

grep -E '([0-9])\s?\1'

如果平台要求仅提交正则参数,直接提交([0-9])\s?\1即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:27:03