我有这样的功能
DataIntegrityViolationException
接收一串重复的单词并返回压缩的字符串。
例如:如果我通过def string_compressor(string)
end
,则应返回aaabbbccaa
。
我已经尝试了很多来解决这个问题。有人可以帮我解决这个问题吗?
答案 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"