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中运行,因此挂墙时间可能要快得多。
- 3 回答
- 0 关注
- 1101 浏览
添加回答
举报
0/150
提交
取消