为了账号安全,请及时绑定邮箱和手机立即绑定

Ruby:如何在数组中查找并返回重复值?

Ruby:如何在数组中查找并返回重复值?

忽然笑 2019-10-15 15:32:46
arr是字符串数组,例如:["hello", "world", "stack", "overflow", "hello", "again"]。一种简单又优雅的方法来检查是否arr有重复项,如果是,则返回其中一个(无论哪个)。例子:["A", "B", "C", "B", "A"]    # => "A" or "B"["A", "B", "C"]              # => nil
查看完整描述

3 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

只需找到第一个实例,其中对象的索引(从左数起)不等于对象的索引(从右数起)。


arr.detect {|e| arr.rindex(e) != arr.index(e) }

如果没有重复项,则返回值为零。


我相信,这也是到目前为止线程中发布的最快的解决方案,因为它不依赖于其他对象的创建,#index并且#rindex是用C实现的。big-O运行时为N ^ 2,因此比Sergio,但是由于“慢速”部分在C中运行,因此挂墙时间可能要快得多。


查看完整回答
反对 回复 2019-10-15
  • 3 回答
  • 0 关注
  • 1055 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信