Ruby字符串编码连续字母频率

Ruby字符串编码连续字母频率,ruby,Ruby,我想用Ruby编码一个字符串,这样输出应该成对,这样我就可以对它进行解码。我想以这样一种方式编码,每对都包含字符串中下一个不同的字母,并且数字连续重复 e、 g如果我编码“aaabbcbaaa”输出应该 [“a”,3],“b”,2],“c”,1],“b”,2],“a”,3]] 这是代码 def encode( s ) b = 0 e = s.length - 1 ret = [] while ( s <= e ) m = s.match(

我想用Ruby编码一个字符串,这样输出应该成对,这样我就可以对它进行解码。我想以这样一种方式编码,每对都包含字符串中下一个不同的字母,并且数字连续重复

e、 g如果我编码“aaabbcbaaa”输出应该 [“a”,3],“b”,2],“c”,1],“b”,2],“a”,3]]

这是代码

def encode( s )
    b = 0
    e = s.length - 1
    ret = [] 
    while ( s <= e )
        m = s.match( /(\w)\1*/ )
        l = m[0][0]
        n = m[0].length
        ret << [l, n]
    end
    ret
end
def编码
b=0
e=s.长度-1
ret=[]

而(s你也可以按程序这样做

def group_consecutive(input)
  groups = []
  input.each_char do |c|
    if groups.empty? || groups.last[0] != c
      groups << [c, 1]
    else
      groups.last[1] += 1
    end
  end
  groups
end
def组_连续(输入)
组=[]
input.each|char do|c|
如果groups.empty?| | groups.last[0]!=c

小组你有没有为此编写过代码?如果有,你的代码是什么样子的?def encode(s)b=0 e=s.length-1 ret=[]而(s@HarisAli)将你尝试的代码放在你的帖子描述中。啊哈,解构参数分配,很好。我们想出了一些相近的想法,这表明我们的思路是正确的。
'aaabbcbbaaa'.scan(/((.)\2*)/).map {|e| [e[1], e[0].size]}
"aaabbcbbaaa".scan(/((.)\2*)/).map{|s, c| [c, s.length]}
def group_consecutive(input)
  groups = []
  input.each_char do |c|
    if groups.empty? || groups.last[0] != c
      groups << [c, 1]
    else
      groups.last[1] += 1
    end
  end
  groups
end