ccc "aabbbddccdddd" #=> dddd 等等 在第一个例子中,ccc是最长的序列,因为c重复了3次。在-6ren">
gpt4 book ai didi

ruby - 查找字符串中最长的子串

转载 作者:太空宇宙 更新时间:2023-11-03 17:10:29 26 4
gpt4 key购买 nike

我想在一个字符串中找到最长的重复字符序列。

例如:

"aabbccc" #=> ccc
"aabbbddccdddd" #=> dddd

等等

在第一个例子中,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

更新:

|_, ary| 的解释:此时我们有 2 元素数组的数组。我们只需要使用第二个,而忽略第一个。相反,如果我们执行 |char, ary| 某些 IDE 会提示未使用的局部变量。放置 _ 告诉 ruby​​ 忽略该值。

使用正则表达式:

我们可以用正则表达式实现同样的事情:

string.scan(/([a-z])(\1*)/).map(&:join).max_by(&:length)

关于ruby - 查找字符串中最长的子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25191185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com