我有这样的功能
def string_compressor(string)
end
Run Code Online (Sandbox Code Playgroud)
它接收一串重复的单词并返回压缩的字符串。例如:如果我通过aaabbbccaa它应该返回a3b3c2a2. 我已经尝试了很多来解决这个问题。有人能帮我解决这个问题吗?
您可以将gsub与捕获组和块一起使用:
p 'aaabbbccaaz'.gsub(/(.)\1+/) { |x| "#{Regexp.last_match(1)}#{x.size}" }
# => "a3b3c2a2z"
Run Code Online (Sandbox Code Playgroud)
或块:
p 'aaabbbccaaz'.chars.chunk{|x| x}.map{|x, xx| xx.size > 1 ? "#{x}#{xx.size}" : x}.join
# => "a3b3c2a2z"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
577 次 |
| 最近记录: |