如何使用Ruby中重复字符的计数来压缩字符串?

时间:2017-03-19 12:07:00

标签: ruby

我有这样的功能

DataIntegrityViolationException

接收一串重复的单词并返回压缩的字符串。 例如:如果我通过def string_compressor(string) end ,则应返回aaabbbccaa。 我已经尝试了很多来解决这个问题。有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

您可以将gsub与捕获组和块一起使用:

p 'aaabbbccaaz'.gsub(/(.)\1+/) { |x| "#{Regexp.last_match(1)}#{x.size}" }
# => "a3b3c2a2z"

或chunk:

p 'aaabbbccaaz'.chars.chunk{|x| x}.map{|x, xx| xx.size > 1 ? "#{x}#{xx.size}" : x}.join
# => "a3b3c2a2z"