From 379f4e105048f403472e8b41db1dbf2cf0c452a4 Mon Sep 17 00:00:00 2001 From: divlo Date: Sun, 15 Nov 2020 11:40:06 +0100 Subject: [PATCH] feat(solution): javascript-non-repeating --- .../javascript-non-repeating/README.md | 5 +++ .../javascript-non-repeating/solution.js | 37 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 challenges/first-non-repeating-character/solutions/javascript-non-repeating/README.md create mode 100644 challenges/first-non-repeating-character/solutions/javascript-non-repeating/solution.js diff --git a/challenges/first-non-repeating-character/solutions/javascript-non-repeating/README.md b/challenges/first-non-repeating-character/solutions/javascript-non-repeating/README.md new file mode 100644 index 0000000..8aa1e7c --- /dev/null +++ b/challenges/first-non-repeating-character/solutions/javascript-non-repeating/README.md @@ -0,0 +1,5 @@ +# javascript-non-repeating - first-non-repeating-character + +Programming language : JavaScript + +Created by [@Divlo](https://github.com/Divlo) on 15 November 2020. diff --git a/challenges/first-non-repeating-character/solutions/javascript-non-repeating/solution.js b/challenges/first-non-repeating-character/solutions/javascript-non-repeating/solution.js new file mode 100644 index 0000000..5695c54 --- /dev/null +++ b/challenges/first-non-repeating-character/solutions/javascript-non-repeating/solution.js @@ -0,0 +1,37 @@ +/** + * @param {string} string + */ +function solution (string) { + const lettersCount = {} + for (let index = 0; index < string.length; index++) { + const character = string[index] + if (lettersCount[character] == null) { + lettersCount[character] = { + total: 1, + firstIndex: index, + value: character + } + } else { + lettersCount[character].total += 1 + } + } + + let result = null + for (const character in lettersCount) { + const characterObject = lettersCount[character] + if (characterObject.total === 1) { + if (result == null) { + result = characterObject + } else if (characterObject.firstIndex < result.firstIndex) { + result = characterObject + } + } + } + + if (result == null) { + return '' + } + return result.value +} + +module.exports = solution