gpt4 book ai didi

ruby - 如何以所有可能的方式将字符串拆分为长度最多为 3 的连续子字符串?

转载 作者:数据小太阳 更新时间:2023-10-29 07:13:54 24 4
gpt4 key购买 nike

我试图获取一个长度在 1 到 10 之间的字符串,并输出将字符串分解为大小为 1、2 或 3 的连续子字符串的所有可能方式。例如:

输入:123456

将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。

    [1, 2, 3, 4, 5, 6]  
[12, 3, 4, 5, 6]
[1, 23, 4, 5, 6]
[1, 2, 34, 5, 6]
[1, 2, 3, 45, 6]
[1, 2, 3, 4, 56]
[12, 34, 5, 6]
[12, 3, 45, 6]
[12, 3, 4, 56]
[1, 23, 45, 6]
[1, 2, 34, 56]
[1, 23, 4, 56]
[12, 34, 56]
[123, 4, 5, 6]
[1, 234, 5, 6]
[1, 2, 345, 6]
[1, 2, 3, 456]
[123, 456]
[1, 23, 456]
[1, 234, 56]
[12, 345, 6]
[12, 3, 456]
[123, 4, 56]
[123, 45, 6]

我正尝试在 ruby​​ 中执行此操作。谢谢!

最佳答案

这是一个工作函数。可能不是最佳选择,因为我没有花太多时间在上面。

str = "1234567890"

def f(s, n)
return [[]] if s.empty?

(1..[n, s.length].min).map{|c| f(s[c..-1], n).map{|a| [s[0, c]] + a}}.inject(&:+)
end

puts f(str, 3).collect{|l| l * "\t"}

编辑:让它更短一些,长度现在作为第二个参数传递给函数以实现灵 active 。

关于ruby - 如何以所有可能的方式将字符串拆分为长度最多为 3 的连续子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6851706/

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