Overview
Today I will be solving the First Uniq Char leetcode challenge. The instructions are as follows.
Given a string, find the first non-repeating character in it and return its index. If it doesn't exist, return -1.
const firstUniqChar = s => {
// code goes here
};
Step 1
I started off with a for loop to loop through str.
const firstUniqChar = str => {
//
}
Step 2
For each character in the string I get the index of it by using the method
str.indexOf(i => current index)
. Obviously on the first go round it will be the 0th index.
Step 3
I created a if block to check if the letter at index of i has a second appearance within the string by using str.lastIndexOf(i => current index). Within that if conditional
if str.indexOf(i) is === to str.lastIndexOf(i)
. There might be a chance that there are 4 occurrences of that letter and lastIndexOf doesn't count occurrences. But, it is good enough to find out if at least there is a repeat within the string.
So going back to the conditional,
str.indexOf(i) is === to str.lastIndexOf(i)
. If both str.indexOf(i) and str.lastIndexOf(i) are the same indices then we know that, that letter isn't a repeat letter and then we'll return it.
if(s.indexOf(s.charAt(i)) === s.lastIndexOf(s.charAt(i))){
return i
}
In the event that there isn't a uniq char then we will just return -1
All Together
const firstUniqChar = s => {
for(let i = 0; i < s.length; i++){
if(s.indexOf(s.charAt(i)) === s.lastIndexOf(s.charAt(i))){
return i
}
}
return -1
};
Top comments (0)