The task:
Given a string, return the first recurring character in it, or null if there is no recurring character.
For example, given the string "acbbac", return "b". Given the string "abcdef", return null.
My imperative solution:
function getFirstRecurringChar(str) {
let i = 0;
const len = str.length;
const letters = {};
while(i < len && !letters[str[i]]) { letters[str[i++]] = true; }
return i < len ? str[i] : null;
};
console.log(getFirstRecurringChar("acbbac"));
My functional solution:
const getFirstRecurringChar2 = str => {
const letters = {};
let lastLetter;
return Array.from(str).some(x => {
if(letters[x]) {
lastLetter = x;
return true;
}
letters[x] = true;
return false;
}) ? lastLetter : null;
};
console.log(getFirstRecurringChar2("abcdef"));
acbbac
the answer could also be "a", because it's the first character that recurs. \$\endgroup\$ – RoToRa Apr 4 '19 at 9:17