gpt4 book ai didi

ruby - 通过 Ruby 拆分字符串以获取所有子字符串的最佳方法是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 06:47:53 26 4
gpt4 key购买 nike

比如单词“stack”,我想得到一个像这样的数组:

['s', 'st', 'sta', ... 'stack', 't', 'ta', ... , 'c', 'ck', 'k']

我是通过这样的代码做到的:

def split_word(str)
result = []
chas = str.split("")
len = chas.size
(0..len-1).each do |i|
(i..len-1).each do |j|
result.push(chas[i..j].join)
end
end
result.uniq
end

有没有更好、更干净的方法来做到这一点?谢谢。

最佳答案

def split_word s
(0..s.length).inject([]){|ai,i|
(1..s.length - i).inject(ai){|aj,j|
aj << s[i,j]
}
}.uniq
end

你也可以考虑使用Set而不是 Array 作为结果。

PS:这是另一个基于数组乘积的想法:

def split_word s
indices = (0...s.length).to_a
indices.product(indices).reject{|i,j| i > j}.map{|i,j| s[i..j]}.uniq
end

关于ruby - 通过 Ruby 拆分字符串以获取所有子字符串的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4508096/

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