Bird
0
0
DSA Cprogramming~10 mins

First Non Repeating Character Using Hash in DSA C - Execution Trace

Choose your learning style9 modes available
Concept Flow - First Non Repeating Character Using Hash
Start
Create empty hash map
Traverse string: For each char
Increment char count in hash
Traverse string again
Check hash count of char
Return char
If none found, return -1
End
We count each character's frequency using a hash map, then find the first character with count 1.
Execution Sample
DSA C
char str[] = "swiss";
int hash[256] = {0};
for (int i=0; str[i]; i++) hash[(unsigned char)str[i]]++;
for (int i=0; str[i]; i++) if (hash[(unsigned char)str[i]] == 1) return i;
return -1;
Counts characters in 'swiss' then finds first non-repeating character index.
Execution Table
StepOperationCharacter ProcessedHash Count UpdateCurrent Hash State (partial)ActionResult
1Initialize hash map-All zeroAll zerosStart counting-
2Count 's''s'hash['s'] = 1{'s':1}Continue counting-
3Count 'w''w'hash['w'] = 1{'s':1, 'w':1}Continue counting-
4Count 'i''i'hash['i'] = 1{'s':1, 'w':1, 'i':1}Continue counting-
5Count 's''s'hash['s'] = 2{'s':2, 'w':1, 'i':1}Continue counting-
6Count 's''s'hash['s'] = 3{'s':3, 'w':1, 'i':1}Counting done-
7Check first char 's''s'hash['s'] = 3{'s':3, 'w':1, 'i':1}Count > 1, skip-
8Check second char 'w''w'hash['w'] = 1{'s':3, 'w':1, 'i':1}Count == 1, return index 1Index 1
9End----First non-repeating char index = 1
💡 Found first character with count 1 at index 1 ('w'), stop.
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 4After Step 5After Step 6After Step 7After Step 8Final
hash['s']011123333
hash['w']001111111
hash['i']000111111
i (index)000000111
Key Moments - 3 Insights
Why do we need two passes over the string?
The first pass counts all characters (see steps 2-6), the second pass finds the first with count 1 (steps 7-8). We can't find the first non-repeating character in one pass because counts are unknown initially.
Why do we use a hash map with size 256?
Because we assume ASCII characters, each character maps to an index 0-255 in the hash array to count frequency efficiently (shown in variable_tracker).
What if no non-repeating character exists?
If no character has count 1 after second pass, the function returns -1 (not shown in this example but implied after step 9).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 6, what is the count of 's' in the hash?
A1
B2
C3
D0
💡 Hint
Check the 'Hash Count Update' and 'Current Hash State' columns at step 6.
At which step does the algorithm find the first non-repeating character?
AStep 7
BStep 8
CStep 6
DStep 9
💡 Hint
Look at the 'Action' and 'Result' columns in the execution_table.
If the input string was "aabbcc", what would the final result be?
AIndex 0
BIndex 1
C-1
DIndex 2
💡 Hint
No character appears once, so the function returns -1 as per the exit_note.
Concept Snapshot
First Non Repeating Character Using Hash
- Use a hash map (array) to count character frequencies
- First pass: count all chars
- Second pass: find first char with count 1
- Return index or -1 if none
- Works in O(n) time with O(1) space for ASCII
Full Transcript
This concept finds the first character in a string that does not repeat. It uses a hash map to count how many times each character appears. First, it goes through the string and counts each character. Then, it goes through the string again to find the first character with count one. If found, it returns the index of that character. Otherwise, it returns -1. This method is efficient and works well for ASCII characters.