我需要一個函數來計算序列中連續相等條目的數量。例如,(連續的「abcdefg」)應該返回0,而(連續的「aabcdddefg」)應該返回3.Clojure:連續重複項的數量
是我寫它的習慣用法還是可以改進?
(defn consecutive [p]
(second (reduce
#(vector %2
(if (= (first %1) %2)
(inc (second %1))
(second %1)))
[nil 0]
p)))
爲什麼要'(連續的「ABCDEFG 「)'返回1?你能否詳細說明一下? – 2012-07-19 15:29:04
因爲最長的連續字符序列是長度爲1(單個字符)。在這種情況下強迫結果爲零似乎邏輯上不一致。我認爲唯一的情況是你有零個連續的字符是一個空字符串。 – mikera 2012-07-19 16:24:56