我想在字符串中找到最长的重复字符序列.
例如:
"aabbccc" #=> ccc
"aabbbddccdddd" #=> dddd
Run Code Online (Sandbox Code Playgroud)
等等
在第一个例子中,ccc是最长的序列,因为c重复3次.在第二个例子中,dddd是最长的序列,因为d重复4次.
它应该是这样的:
b = []
a.scan(/(.)(.)(.)/) do |x,y,z|
b<<x<<y<<z if x==y && y==z
end
Run Code Online (Sandbox Code Playgroud)
但我想,有一些标志可以保持重复次数
这应该工作:
string = 'aabbccc'
string.chars.chunk {|a| a}.max_by {|_, ary| ary.length}.last.join
Run Code Online (Sandbox Code Playgroud)
解释|_, ary|:此时我们有2个元素数组的数组.我们只需要使用第二个,我们忽略第一个.相反,我们做|char, ary|一些IDE会抱怨未使用的局部变量.放置_告诉ruby忽略该值.
我们可以用正则表达式来实现同样的目的:
string.scan(/([a-z])(\1*)/).map(&:join).max_by(&:length)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
787 次 |
| 最近记录: |