连续的字母频率

Jgo*_*o83 2 ruby

我正在尝试编写代码来确定字符串中字母的连续频率.

例如:

"aabbcbb" => ["a",2],["b",2],["c", 1], ["b", 2]
Run Code Online (Sandbox Code Playgroud)

我的代码给了我第一个字母频率,但没有继续下一个.

def encrypt(str)
  array = []
  count = 0
   str.each_char do |letter|

    if array.empty?
      array << letter
      count += 1
    elsif array.last == letter
      count += 1
    else
      return [array, count]
      array = []
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

ste*_*lag 9

p "aabbcbb".chars.chunk{|c| c}.map{|c, a| [c, a.size]} 
# => [["a", 2], ["b", 2], ["c", 1], ["b", 2]]
Run Code Online (Sandbox Code Playgroud)


saw*_*awa 6

"aabbcbb".chars.slice_when(&:!=).map{|a| [a.first, a.length]}
# => [["a", 2], ["b", 2], ["c", 1], ["b", 2]]
Run Code Online (Sandbox Code Playgroud)

  • 油漆在"Enumerable#slice_when"上仍然很新鲜.我看到了它,并且在第2.2节中添加了`slice_after`. (3认同)