加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 如何以一切可能的方式将字符串拆分为长度最多为3的连续

发布时间:2020-12-17 03:34:59 所属栏目:百科 来源:网络整理
导读:我试图在长度1和10之间取一个字符串,并输出所有可能的方法将字符串分解为大小为1,2或3的连续子字符串.例如: 输入:123456 将整数切成单个字符,然后继续查找组合. 代码将返回以下所有数组. [1,2,3,4,5,6] [12,6] [1,23,34,45,56] [12,56] [1,56] [123,234,34
我试图在长度1和10之间取一个字符串,并输出所有可能的方法将字符串分解为大小为1,2或3的连续子字符串.例如:

输入:123456

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

[1,2,3,4,5,6]  
    [12,6]  
    [1,23,34,45,56]  
    [12,56]  
    [1,56]  
    [123,234,345,456]  
    [123,456]  
    [1,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"}

编辑:使它缩短一点,现在作为第二个参数传递长度以实现灵活性.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读