Ruby计数字符序列不使用正则表达式

hke*_*n27 4 ruby string count enumerable sequence

在计算序列中的字符时需要有关此代码的帮助.

这就是我要的:

word("aaabbcbbaaa") == [["a", 3], ["b", 2], ["c", 1], ["b", 2], ["a", 3]]
word("aaaaaaaaaa") == [["a", 10]]
word("") == []
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

def word(str)
words=str.split("")
count = Hash.new(0)

words.map {|char| count[char] +=1 }

return count
end
Run Code Online (Sandbox Code Playgroud)

我得到了一句话("aaabbcbbaaa")=> [["a",6],["b",4],["c",1]],这不是我想要的.我想计算每个序列.我更喜欢没有正则表达式的解决方案.谢谢.

Yev*_*yev 7

按字符分割字符串,然后按字符串分组,然后计算字符串中的字符数:

def word str
  str
  .chars
  .chunk{ |e| e }
  .map{|(e,ar)| [e, ar.length] }
end

p word "aaabbcbbaaa"
p word("aaaaaaaaaa")
p word ""
Run Code Online (Sandbox Code Playgroud)

结果:

[["a", 3], ["b", 2], ["c", 1], ["b", 2], ["a", 3]]
[["a", 10]]
[]
Run Code Online (Sandbox Code Playgroud)