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

Hacker Rank稀疏数组问题:Python代码过样例但多数测试用例失败求助

代码存在的问题

1. 约束判断逻辑错误

内层条件判断写错:len(queries)>= 1 and len(strings)<= 1000,这里应该判断queries的长度上限,而非重复判断strings,正确应为len(queries) >=1 and len(queries) <=1000。
此外,题目已明确输入符合约束条件,无需在函数内添加这些判断——一旦输入触发判断不成立(比如你的错误判断),count_arr会未定义,返回时直接抛出NameError,导致测试用例失败。

2. 字符串匹配逻辑错误

代码中仅对输入字符串做strip()处理,未对查询字符串做相同处理。以示例为例:查询字符串' abc'未做strip(),而输入字符串'abc'做strip()后是'abc',两者不相等,无法得到示例中的计数1。若题目要求忽略前后空格匹配,需同时对查询和输入字符串做strip();若要求精确匹配,则不该使用strip()。

3. 未覆盖所有查询场景

若某个查询字符串长度不符合你写的判断(即使题目说不会出现),该查询不会被加入count_arr,返回的结果数组长度会小于queries的长度,直接导致结果错误。

修复后的代码

def matchingStrings(strings, queries):
    # 先统计所有输入字符串的出现次数,提升效率
    count_map = {}
    for s in strings:
        # 若要求精确匹配则用s,若要求忽略空格则用s.strip()
        key = s.strip()
        count_map[key] = count_map.get(key, 0) + 1
    
    # 生成查询结果数组
    result = []
    for q in queries:
        # 对应上面的key处理逻辑
        query_key = q.strip()
        result.append(count_map.get(query_key, 0))
    
    return result

关键修复说明

  • 移除不必要的约束判断:避免因判断逻辑错误导致的异常,同时简化代码。
  • 优化统计逻辑:仅遍历一次输入字符串统计次数,再遍历查询数组获取结果,时间复杂度从O(n*q)降至O(n+q),效率更高。
  • 修正匹配逻辑:统一处理查询和输入字符串的空格问题,确保和题目要求一致。若题目要求精确匹配,只需将key = s.strip()和query_key = q.strip()改为key = s和query_key = q即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:30:56