我有一個關於出現在我的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'字符我沒有看到)。謝謝大家幫助我看到這個錯誤。 –