我有一个关于出现在我的counts
哈希中的神秘'e'字符的问题。如何修复不正确的字符计数代码
我最初的做法是笨拙和不雅:
def letter_count(str)
counts = {}
words = str.split(" ")
words.each do |word|
letters = word.split("")
letters.each do |letter|
if counts.include?(letter)
counts[letter] += 1
else
counts[letter] = 1
end
end
end
counts
end
这种方法工作,但我想让它有点更具可读性,所以我把它简称为:
def letter_count(str)
counts = Hash.new(0)
str.split("").each{|letter| counts[letter] += 1 unless letter == ""}
counts
end
这是我遇到了这个问题,并使用以下方法修复:
str.split("").each{|letter| counts[letter] += 1 unless letter == " "} # added a space.
我不明白为什么em pty空格由字母'e'表示或者根本不计算在内。
欢迎SO。请阅读“[问]”和链接页面,以及“[mcve]”。简明明确的问题非常重要。你的问题中有很多不必要的信息。在“[mcve]”中,我们需要输入数据,这是您要计数的字符串。这可以帮助每个人解决同样的问题。 –
你能告诉我们对'letter_count'的调用,它给你这种奇怪的行为吗?我怀疑你没有通过你的想法。 – Schwern
我感到非常愚蠢。我查看了正在提供的测试用例,果然我误解了它们(有一个'e'字符我没有看到)。谢谢大家帮助我看到这个错误。 –