我想找到字符串中最长的重复字符序列。
ex:
"aabbccc" #=> ccc
"aabbbddccdddd" #=> dddd
etc
在第一个示例中,ccc 是最长的序列,因为 c 重复了 3 次。在第二个示例中,dddd 是最长的序列,因为 d 重复了 4 次。
它应该是这样的:
b = []
a.scan(/(.)(.)(.)/) do |x,y,z|
b<<x<<y<<z if x==y && y==z
end
但我想有一些标志来保持重复计数
这应该有效:
string = 'aabbccc'
string.chars.chunk {|a| a}.max_by {|_, ary| ary.length}.last.join
Update:
的解释|_, ary|
:此时我们有一个 2 元素数组的数组。我们只需要使用第二个,而忽略第一个。如果我们这样做|char, ary|
一些 IDE 会抱怨未使用的局部变量。配售_
告诉 ruby 忽略该值。
使用正则表达式:
我们可以使用正则表达式实现同样的目的:
string.scan(/([a-z])(\1*)/).map(&:join).max_by(&:length)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)