📖 Scenario: Imagine you are building a chat app. You want to find the first character in a message that does not repeat. This helps highlight unique letters for fun effects.
🎯 Goal: Build a program that finds the first non-repeating character in a given string using a hash (object) to count characters.
📋 What You'll Learn
Create a string variable with a specific message
Create an empty object to count characters
Use a loop to fill the object with character counts
Use another loop to find the first character with count 1
Print the first non-repeating character or a message if none found
💡 Why This Matters
🌍 Real World
Finding unique characters helps in text analysis, spell checking, and creating fun text effects in chat apps.
💼 Career
Understanding how to count and analyze characters using hashes is a key skill in coding interviews and text processing jobs.
Progress0 / 4 steps
1
Create the message string
Create a string variable called message and set it to the exact value "swiss".
DSA Javascript
Hint
Use const to create the variable and assign the string "swiss" exactly.
2
Create an empty object to count characters
Create an empty object called charCount to store character counts.
DSA Javascript
Hint
Use curly braces {} to create an empty object.
3
Count characters in the message
Use a for loop with variable char to iterate over message. Inside the loop, update charCount[char] by adding 1 if it exists, or set it to 1 if it does not.
DSA Javascript
Hint
Use a for...of loop to go through each character in the string.
4
Find and print the first non-repeating character
Use a for loop with variable char to iterate over message. Inside the loop, check if charCount[char] equals 1. If yes, print char using console.log(char) and break the loop. If no such character is found, print "No non-repeating character found".
DSA Javascript
Hint
Check each character in order. Print the first with count 1 and stop. If none, print the message.
Practice
(1/5)
1. What is the main purpose of using a hash (object) in finding the first non repeating character in a string?
easy
A. To reverse the string
B. To sort the characters alphabetically
C. To remove duplicate characters from the string
D. To count the frequency of each character in the string
Solution
Step 1: Understand the role of hash in frequency counting
A hash (object) stores each character as a key and counts how many times it appears in the string.
Step 2: Use frequency to find first non repeating character
By checking the hash, we find the first character with count 1, which is the first non repeating character.
Final Answer:
To count the frequency of each character in the string -> Option D
Quick Check:
Hash counts characters = Frequency count [OK]
Hint: Use hash to count characters, then find first with count 1 [OK]
Common Mistakes:
Trying to sort characters instead of counting
Ignoring character frequency
Using hash to reverse string
2. Which of the following is the correct syntax to initialize an empty hash (object) in JavaScript for counting characters?
easy
A. let hash = [];
B. let hash = {};
C. let hash = ();
D. let hash = '';
Solution
Step 1: Identify JavaScript object syntax
In JavaScript, curly braces {} create an empty object, which is used as a hash for key-value pairs.
Step 2: Confirm correct initialization
Using let hash = {}; correctly initializes an empty object for counting characters.
Final Answer:
let hash = {}; -> Option B
Quick Check:
Empty object = {} [OK]
Hint: Use {} to create empty object for hash in JavaScript [OK]
Common Mistakes:
Using [] which creates an array, not an object
Using () which is invalid syntax
Using empty string '' which is not an object
3. What will be the output of the following code?
function firstNonRepeatingChar(str) {
const hash = {};
for (const ch of str) {
hash[ch] = (hash[ch] || 0) + 1;
}
for (const ch of str) {
if (hash[ch] === 1) return ch;
}
return '_';
}
console.log(firstNonRepeatingChar('swiss'));
Step 2: Find first character with count 1 in original order
Order: s, w, i, s, s. First with count 1 is 'w'.
Final Answer:
'w' -> Option A
Quick Check:
First unique char in 'swiss' = 'w' [OK]
Hint: Check counts, then scan string for first count 1 char [OK]
Common Mistakes:
Returning 's' which repeats
Returning 'i' which is second unique
Returning '_' which means no unique char
4. Identify the error in the following code snippet that tries to find the first non repeating character:
function firstNonRepeatingChar(str) {
const hash = {};
for (let i = 0; i <= str.length; i++) {
const ch = str[i];
hash[ch] = (hash[ch] || 0) + 1;
}
for (let i = 0; i < str.length; i++) {
if (hash[str[i]] === 1) return str[i];
}
return '_';
}
medium
A. The hash is not initialized correctly
B. The second loop should use <= instead of <
C. The first loop uses <= instead of < causing undefined access
D. The return '_' is unreachable code
Solution
Step 1: Check loop conditions for index errors
The first loop uses i <= str.length, which accesses str[str.length] (undefined), causing an error.
Step 2: Correct loop condition to i < str.length
Changing to i < str.length prevents out-of-bounds access and correctly counts characters.
Final Answer:
The first loop uses <= instead of < causing undefined access -> Option C
Quick Check:
Loop index must be less than length [OK]
Hint: Use < not <= for string index loops to avoid undefined [OK]
Common Mistakes:
Using <= causes out-of-range errors
Ignoring loop boundary conditions
Misunderstanding hash initialization
5. Given the string 'aabbccddeeffg', which modification to the code below will correctly return the first non repeating character?
function firstNonRepeatingChar(str) {
const hash = {};
for (const ch of str) {
hash[ch] = (hash[ch] || 0) + 1;
}
for (const ch of str) {
if (hash[ch] === 1) return ch;
}
return '_';
}
Options: A) Change return '_' to return null B) Add a check to ignore spaces in the string C) Modify the function to return '_' if no unique character exists D) Change the hash to store boolean instead of counts
hard
A. Change return '_' to return null
B. Add a check to ignore spaces in the string
C. Modify the function to return '_' if no unique character exists
D. Change the hash to store boolean instead of counts
Solution
Step 1: Analyze the string and current function behavior
String 'aabbccddeeffg' has all characters repeated except 'g' which appears once.
Step 2: Confirm function returns '_' if no unique char
The function already returns '_' if no unique character is found, which is correct behavior.
Step 3: Understand why changing return '_' to return null is better
Changing return '_' to return null clearly indicates no unique character found, which is a better practice than returning a character that might be confused as valid.
Final Answer:
Change return '_' to return null -> Option A
Quick Check:
Return null when no unique char found is clearer [OK]
Hint: Return null to indicate no unique character found [OK]
Common Mistakes:
Returning '_' which can be confused as a valid character
Ignoring spaces when not needed
Using boolean instead of counts loses frequency info
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.