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

数组 – 有效删除Ruby中数组中其他元素的所有子串

发布时间:2020-12-17 03:25:07 所属栏目:百科 来源:网络整理
导读:我有一个复杂的问题就是在手编辑一个数组. 我有一个数组,其中一些元素是其他元素的子字符串.我想删除所有子字符串并仅保留超集/字符串. 即Array = [‘1′,’1 1′,’1 1 1′,’1 1 1 2′,’1 2 3 1′,’1 2′,’2 3’] 操作后我应该有一个清理过的数组= [‘1
我有一个复杂的问题就是在手编辑一个数组.
我有一个数组,其中一些元素是其他元素的子字符串.我想删除所有子字符串并仅保留超集/字符串.
即Array => [‘1′,’1 1′,’1 1 1′,’1 1 1 2′,’1 2 3 1′,’1 2′,’2 3’]
操作后我应该有一个清理过的数组=> [‘1 1 1 2′,’1 2 3 1’]

是否有一种有效的算法来实现相同的目标?

解决方法

这种方法使用一些数组数学从数组中删除自己,然后检查它是否显示为子字符串.我不知道这是多么高效.

a = ['1','1 1','1 1 1','1 1 1 2','1 2 3 1','1 2','2 3']
a.uniq.delete_if { |i| (a-[i]).any? {|j| j.include? i } }

我改为使用delete_if,因为它会提高性能,因为你在发现子字符串时缩短你的数组,使后续检查稍微快一些.

更新:当数组包含重复项时,Cary Swoveland发现了一个问题.我已经添加了一个uniq来重复数组,尽管如果重复一个元素会发生什么应该不完全清楚,是否应该删除因为它们是彼此的子串?我已经解决了这个问题,假设重复导致输出中只显示一个项目,但这可能是错误的.

(编辑:李大同)

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

    推荐文章
      热点阅读