Challenge Prit’s solution (defn alternating-characters [s] "TOC: 25m Complexity: O(n), (= n (count s))" (letfn [(find-indices [s] (loop [s (seq s) indices {:A [] :B []} curr-index 0] (if-not (empty? s) (recur (rest s) (if (= (first s) \A) (assoc indices :A (conj (:A indices) curr-index)) (assoc indices :B (conj (:B indices) curr-index))) (inc curr-index)) indices))) (count-adjacent [indices] (loop [a-indices indices last-char -2 num-adjacent 0] (if-not (empty? a-indices) (let [curr-char (first a-indices)] (prn curr-char last-char) (recur (rest a-indices) curr-char (if (= curr-char (inc last-char)) (inc num-adjacent) num-adjacent))) num-adjacent)))] (let [indices (find-indices s)] (-> (count-adjacent (:A indices)) (+ (count-adjacent (:B indices))))))) (alternating-characters "AAABBAB")
Hackerrank alternating characters
Hackerrank alternating characters
Hackerrank alternating characters
Challenge Prit’s solution (defn alternating-characters [s] "TOC: 25m Complexity: O(n), (= n (count s))" (letfn [(find-indices [s] (loop [s (seq s) indices {:A [] :B []} curr-index 0] (if-not (empty? s) (recur (rest s) (if (= (first s) \A) (assoc indices :A (conj (:A indices) curr-index)) (assoc indices :B (conj (:B indices) curr-index))) (inc curr-index)) indices))) (count-adjacent [indices] (loop [a-indices indices last-char -2 num-adjacent 0] (if-not (empty? a-indices) (let [curr-char (first a-indices)] (prn curr-char last-char) (recur (rest a-indices) curr-char (if (= curr-char (inc last-char)) (inc num-adjacent) num-adjacent))) num-adjacent)))] (let [indices (find-indices s)] (-> (count-adjacent (:A indices)) (+ (count-adjacent (:B indices))))))) (alternating-characters "AAABBAB")