我需要一个函数来计算序列中连续相等条目的数量。例如,(连续的“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