DEV Community

Hilton Meyer
Hilton Meyer

Posted on • Originally published at hiltonmeyer.com on

First Unique Character in a String

The problem #

The definition for First Unique Character in a String is Given a string, find the first non-repeating character in it and return its index. If it doesn't exist, return -1. This has an easy rating on Leetcode although I must say I as usual complicated things before finding a cool solution from Terrible Whiteboard on YouTube. My original thought was to convert to an array and then remove each found character in the array. This led me into loops of trying to find matching and non matching values and eventually a deadend. I knew that I was missing something simple and this is where the video showed me I was thinking about is in the opposite direction. Instead of removing I should be creating a map of each character and the number of times they occurred. The return should be the first character which a occurrence of 1.

/**
 * @param {string} s
 * @return {number}
 */
var firstUniqChar = function (s) {
  const occurrence = {};

  for (let char of s) {
    if (occurrence[char] === undefined) {
      occurrence[char] = 1;
    } else {
      occurrence[char]++;
    }
  }
  for(let i=0;i<s.length;i++){
    const char = s.charAt(i);
    if (occurrence[char]===1) return i;
  }
  return -1;
};

Enter fullscreen mode Exit fullscreen mode

What I learnt #

  1. I can create a mapping of the characters and add to them. A cool use of an object and actually I have heard about Maps in Javascript and wondering whether they couldn't be used here.
  2. I can loop through a string using for (let char of s). I was unaware of this cool little String trick. Another reason why doing these short problems can lead to learning a small trick to add to the quiver of js arrows.
  3. Another cool String trick (I really should go over the API) is charAt. So I can actually extract and extract a character using the same sort of index like an Array.

SurveyJS custom survey software

Simplify data collection in your JS app with a fully integrated form management platform. Includes support for custom question types, skip logic, integrated CCS editor, PDF export, real-time analytics & more. Integrates with any backend system, giving you full control over your data and no user limits.

Learn more

Top comments (0)

nextjs tutorial video

Youtube Tutorial Series 📺

So you built a Next.js app, but you need a clear view of the entire operation flow to be able to identify performance bottlenecks before you launch. But how do you get started? Get the essentials on tracing for Next.js from @nikolovlazar in this video series 👀

Watch the Youtube series

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay