First Unique Letter JS

I'm reading a book about data structures and algorithms, and currently still learning and being challenged on time complexity. As of now, the book is showing examples of different algorithms and asking the reader to dissect them and attempt to figure out their time complexities.

A neat takeaway from the book was that more often than not, a double nested loop will almost always be O(n²), however, there are some cases where this will not be true. The book does a very good job of showing how algorithm times will eventually take longer than others, and that is what you need to keep in mind, in the long run, which is faster.

The book posed a challenge to write an algorithm that would find the first unique character in a string that has a time complexity of 0(N²). My initial thought was that the algorithm I write will have to loop through the string as we will not truly know if the character we come across is unique until we have checked the whole string. So I will be starting at the end of the string and working my way to the beginning. As I loop through the string, I make the following steps.

Step 1: I will be checking a hash map for a value with the character as a key. If it does not exist, I create a key with that character and set the value to 1. In the event the key-value pair exists, I will increment the value.

Step 2: I will check if that key-value pair has a value of 1, if it is I set a unique variable to be that character.

So, I reset my unique variable anytime I create a new key-value pair, which will have a value of 1. Since I am working backward, the last unique value I find will actually be the first unique value in the string. See the code with instructions below. In this example, I am running the algorithm on the string “minimum” the return value would be “n”. This was the best way I could think of to create this algorithm without looping over the string data multiple times.

--

--

--

Soon-to-be Flatiron School Successor, with an enthusiasm towards Front-End Web Development, lifelong learning, and continuous improvement.

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Making Sense, First Week

Odoo | Docker| custom addons

Copying a file from Windows to Linux through SSH

Metaverse Platform MetaRising World

Rakuten Marketplace API

Ru Paul’s Drag Race CLI Project

How to earn money via referral to friends and play cash tournaments in MPL?

SaaS Cloud Migration: GCP Network Architecture

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Jr Medina

Jr Medina

Soon-to-be Flatiron School Successor, with an enthusiasm towards Front-End Web Development, lifelong learning, and continuous improvement.

More from Medium

Fine Tuning my JavaScript Skills on Scrimba Learning Platform

Ditching my Array Methods Cheat Sheet

Repetition, React Router, and the Importance of Reading Code

Understanding Recursion and the Call Stack for Beginners