Ruby字符串编码连续字母频率
我想用Ruby编码一个字符串,这样输出应该成对,这样我就可以对它进行解码。我想以这样一种方式编码,每对都包含字符串中下一个不同的字母,并且数字连续重复 e、 g如果我编码“aaabbcbaaa”输出应该 [“a”,3],“b”,2],“c”,1],“b”,2],“a”,3]] 这是代码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(
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