/** * @function firstUniqChar * @description Given a string str, find the first non-repeating character in it and return its index. If it does not exist, return -1. * @param {String} str - The input string * @return {Number} - The index of first unique character. * @example firstUniqChar("javascript") => 0 * @example firstUniqChar("sesquipedalian") => 3 * @example firstUniqChar("aabb") => -1 */ const firstUniqChar = (str) => { if (typeof str !== 'string') { throw new TypeError('Argument should be string') } const count = new Map() for (const char of str) { if (!count[char]) { count[char] = 1 } else { count[char]++ } } for (let i = 0; i < str.length; i++) { if (count[str[i]] === 1) return i } return -1 } export { firstUniqChar }