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

arr是字符串数组,例如:["hello", "world", "stack", "overflow", "hello", "again"]。


一种简单又优雅的方法来检查是否arr有重复项,如果是,则返回其中一个(无论哪个)。


例子:


["A", "B", "C", "B", "A"]    # => "A" or "B"

["A", "B", "C"]              # => nil


忽然笑
浏览 1061回答 3
3回答

守着星空守着你

只需找到第一个实例,其中对象的索引(从左数起)不等于对象的索引(从右数起)。arr.detect {|e| arr.rindex(e) != arr.index(e) }如果没有重复项,则返回值为零。我相信,这也是到目前为止线程中发布的最快的解决方案,因为它不依赖于其他对象的创建,#index并且#rindex是用C实现的。big-O运行时为N ^ 2,因此比Sergio,但是由于“慢速”部分在C中运行,因此挂墙时间可能要快得多。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Ruby