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 關注
- 1155 瀏覽
添加回答
舉報
0/150
提交
取消