What is the main idea behind using a hash map to find the first non-repeating character in a string?
Use a hash map to count how many times each character appears, then find the first character with a count of one.
Click to reveal answer
beginner
Why do we need two passes over the string when using a hash map to find the first non-repeating character?
First pass counts characters, second pass finds the first character with count one.
Click to reveal answer
beginner
In TypeScript, which data structure is best to store character counts for this problem?
A Map or a plain object can be used to store counts of each character.
Click to reveal answer
beginner
What should the function return if all characters in the string repeat?
Return -1 or a special value indicating no non-repeating character found.
Click to reveal answer
intermediate
How does the hash map approach compare to checking each character against all others?
Hash map approach is faster (linear time) because it avoids repeated scanning of the string.
Click to reveal answer
What does the hash map store in the 'First Non Repeating Character Using Hash' approach?
ACount of each character in the string
BIndex of each character
CCharacters sorted alphabetically
DLength of the string
✗ Incorrect
The hash map stores how many times each character appears.
How many times do we scan the string in the hash map method?
ATwice
BThree times
COnce
DFour times
✗ Incorrect
First to count characters, second to find the first non-repeating.
What is the time complexity of the hash map approach for this problem?
AO(n^2)
BO(n log n)
CO(n)
DO(1)
✗ Incorrect
Counting and scanning are both linear in string length.
If the string is 'aabbcc', what should the function return?
A0
B-1
Ca
Dc
✗ Incorrect
All characters repeat, so return -1.
Which TypeScript type is suitable for the hash map in this problem?
AArray<string>
Bnumber
CSet<string>
DMap<string, number>
✗ Incorrect
Map stores character counts efficiently.
Explain step-by-step how to find the first non-repeating character in a string using a hash map.
Think about counting first, then searching.
You got /5 concepts.
Describe why using a hash map is better than nested loops for this problem.
Focus on time complexity and efficiency.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of using a hash (like a dictionary or map) to find the first non-repeating character in a string?
easy
A. To count the frequency of each character efficiently
B. To sort the characters alphabetically
C. To reverse the string quickly
D. To remove duplicate characters from the string
Solution
Step 1: Understand the role of a hash in frequency counting
A hash (dictionary/map) stores each character as a key and counts how many times it appears in the string.
Step 2: Use frequency counts to find the first non-repeating character
By checking the counts in order, we can find the first character with count 1, which is the first non-repeating character.
Final Answer:
To count the frequency of each character efficiently -> Option A
Quick Check:
Hash counts characters = To count the frequency of each character efficiently [OK]
Hint: Use a hash to count characters, then find count 1 [OK]
Common Mistakes:
Thinking hash sorts characters
Trying to reverse string instead
Assuming hash removes duplicates
2. Which of the following TypeScript code snippets correctly initializes a hash map to store character counts?
easy
A. const charCount = new Set<string>();
B. const charCount = new Array();
C. const charCount = new Map();
D. const charCount = new Object<number>();
Solution
Step 1: Identify correct TypeScript syntax for a map
TypeScript uses Map to create a hash map. Here, keys are strings and values are numbers.
Step 2: Check each option for correctness
const charCount = new Map(); uses Map(), which is correct. Options A, B, and D use incorrect types or structures.
Final Answer:
const charCount = new Map<string, number>(); -> Option C
Quick Check:
Map<string, number> is correct syntax [OK]
Hint: Use Map() to store char counts [OK]
Common Mistakes:
Using Array instead of Map
Using Set which stores only keys
Incorrect Object initialization
3. What will be the output of the following TypeScript code?
function firstNonRepeatingChar(s: string): string {
const count = new Map();
for (const ch of s) {
count.set(ch, (count.get(ch) ?? 0) + 1);
}
for (const ch of s) {
if (count.get(ch) === 1) return ch;
}
return '_';
}
console.log(firstNonRepeatingChar('swiss'));
medium
A. '_'
B. 's'
C. 'i'
D. 'w'
Solution
Step 1: Count character frequencies in 'swiss'
Characters: s(3), w(1), i(1). The map stores these counts.
Step 2: Find first character with count 1 in order
Order: 's' (count 3), 'w' (count 1), 'i' (count 1). The first with count 1 is 'w'.
Final Answer:
'w' -> Option D
Quick Check:
First unique char in 'swiss' = 'w' [OK]
Hint: Check counts in order, first with 1 is answer [OK]
Common Mistakes:
Choosing first character without checking count
Confusing 'i' and 'w'
Returning '_' when unique char exists
4. Identify the bug in this TypeScript function to find the first non-repeating character:
function firstNonRepeatingChar(s: string): string {
const count = new Map();
for (let i = 0; i <= s.length; i++) {
const ch = s[i];
count.set(ch, (count.get(ch) ?? 0) + 1);
}
for (const ch of s) {
if (count.get(ch) === 1) return ch;
}
return '_';
}
medium
A. Map should be initialized with Object instead of Map
B. Loop condition should be i < s.length, not i <= s.length
C. Return '_' should be inside the first loop
D. Use 'for...in' instead of 'for...of' for string iteration
Solution
Step 1: Check the for loop boundary
The loop runs from i = 0 to i <= s.length, which accesses s[s.length], an undefined index causing error.
Step 2: Correct loop condition
Change condition to i < s.length to avoid out-of-bounds access and correctly count characters.
Final Answer:
Loop condition should be i < s.length, not i <= s.length -> Option B
Quick Check:
Loop boundary off by one error [OK]
Hint: Use i < length, not i <= length in loops [OK]
Common Mistakes:
Off-by-one error in loop condition
Misusing Map initialization
Wrong loop type for string iteration
5. Given the string 'aabbccddeeffg', which modification to the hash-based approach will correctly return the first non-repeating character when some characters appear multiple times and some only once?
hard
A. After counting, iterate the string and return the first character with count 1
B. Sort the string and return the first character
C. Return the character with the highest count from the hash
D. Return the last character in the string regardless of counts
Solution
Step 1: Count frequencies of all characters
Use a hash map to count how many times each character appears in the string.
Step 2: Iterate string in original order to find first count 1
Check each character in order; the first with count 1 is the first non-repeating character.
Final Answer:
After counting, iterate the string and return the first character with count 1 -> Option A
Quick Check:
Count then check order for first unique char [OK]
Hint: Count all, then find first with count 1 in order [OK]
Common Mistakes:
Sorting string loses original order
Returning highest count instead of unique
Ignoring character order in result
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.