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