为什么 HackerRank 的示例测试用例在我代码中的 Ruby #tally 方法中抛出 NoMethodError?

问题描述 投票:0回答:1

我试图用 Ruby 解决这个 HackerRank 稀疏数组问题。

我想在 string_list 数组上使用 #tally 来创建键的散列及其出现次数。我已经检查过这个工作并正确地打印到我的控制台:

string_list = ['ab', 'ab', 'abc']
string_count = string_list.tally

p string_count: {"ab"=>2, "abc"=>1}

我的代码在本地给了我一个整数数组的预期结果,但是当我将我的代码提交给 HackerRank 时,它似乎在使用 #tally 时抛出一个 NoMethodError。

下面是错误:

Solution.rb:16:in `matchingStrings': undefined method `tally' for ["aba", "baba", "aba", "xzxb"]:Array (NoMethodError)
    from Solution.rb:45:in `<main>'

任何人都可以阐明为什么会抛出错误吗?

这是我的完整代码解决方案和终端输出。

def matching_strings(string_list, queries)
  string_count = string_list.tally

  queries.map do |query|
    string_count[query].nil? ? string_count[query] = 0 : string_count[query]
  end
end

string_list = ['ab', 'ab', 'abc']
queries = ['ab', 'abc', 'bc']

p matching_strings(string_list, queries) : [2, 1, 0]

谢谢!

ruby hash sparse-matrix nomethoderror tally
1个回答
0
投票

HackerRank 使用 Ruby 2.6.4。

Enumerable#tally
被添加到 Ruby 2.7.0.

您可以随时通过打印

RUBY_VERSION
的值来检查它。

© www.soinside.com 2019 - 2024. All rights reserved.