📖 Scenario: Imagine you are building a simple text analyzer tool. One feature is to find the first character in a word that does not repeat. This helps highlight unique letters for fun word games or quick text checks.
🎯 Goal: Build a program that finds the first non-repeating character in a given string using a hash (dictionary) to count character occurrences.
📋 What You'll Learn
Create a string variable with a specific word
Create a dictionary to count characters
Use a loop to fill the dictionary with character counts
Use another loop to find the first character with count 1
Print the first non-repeating character
💡 Why This Matters
🌍 Real World
Finding unique characters quickly is useful in text analysis, spell checking, and game development where unique letter detection matters.
💼 Career
Understanding how to use dictionaries for counting and searching is a key skill in programming jobs involving data processing and algorithm design.
Progress0 / 4 steps
1
Create the input string
Create a string variable called input and set it to the exact value "swiss".
DSA C#
Hint
Use string input = "swiss"; to create the variable.
2
Create a dictionary to count characters
Create a dictionary called charCount of type Dictionary<char, int> and initialize it as empty.
DSA C#
Hint
Use new Dictionary<char, int>() to create the dictionary.
3
Count each character in the string
Use a foreach loop with variable ch to iterate over input. Inside the loop, update charCount to count each character's occurrences.
DSA C#
Hint
Check if charCount has the character key. If yes, increase count; if no, set count to 1.
4
Find and print the first non-repeating character
Use a foreach loop with variable ch to iterate over input. Inside the loop, check if charCount[ch] equals 1. If yes, print ch and break the loop.
DSA C#
Hint
Print the first character whose count is 1 and stop checking further.
Practice
(1/5)
1. What is the main purpose of using a hash (dictionary) when finding the first non-repeating character in a string?
easy
A. To count the frequency of each character in the string
B. To sort the characters alphabetically
C. To reverse the string quickly
D. To store the string length
Solution
Step 1: Understand the role of hash in frequency counting
A hash (dictionary) stores each character as a key and counts how many times it appears in the string.
Step 2: Use frequency to find non-repeating character
By checking the counts, 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 in the string -> Option A
Quick Check:
Hash = frequency map [OK]
Hint: Use hash to count characters, then find first with count 1 [OK]
Common Mistakes:
Trying to sort characters instead of counting
Using hash to store indexes only
Ignoring character frequency
2. Which of the following C# code snippets correctly initializes a dictionary to count character frequencies for a string input?
easy
A. var freq = new Dictionary(); foreach (char c in input) { if (freq.ContainsKey(c)) freq[c]++; else freq[c] = 1; }
B. var freq = new Dictionary(); foreach (char c in input) { freq[c] = 1; }
C. var freq = new List<int>(); foreach (char c in input) { freq.Add(c); }
D. var freq = new Dictionary(); foreach (char c in input) { freq[c] = c.ToString(); }
Solution
Step 1: Check dictionary key and value types
We need a dictionary with char keys and int values to count frequencies.
Step 2: Verify frequency counting logic
var freq = new Dictionary(); foreach (char c in input) { if (freq.ContainsKey(c)) freq[c]++; else freq[c] = 1; } correctly checks if the character exists and increments count or sets it to 1.
Final Answer:
var freq = new Dictionary(); foreach (char c in input) { if (freq.ContainsKey(c)) freq[c]++; else freq[c] = 1; } -> Option A
Quick Check:
Correct dictionary type and counting logic [OK]
Hint: Use Dictionary and increment counts properly [OK]
Common Mistakes:
Using wrong dictionary types
Not incrementing counts correctly
Using List instead of Dictionary
3. What will be the output of the following C# code?
string input = "swiss";
var freq = new Dictionary();
foreach (char c in input) {
if (freq.ContainsKey(c)) freq[c]++;
else freq[c] = 1;
}
char result = '\0';
foreach (char c in input) {
if (freq[c] == 1) {
result = c;
break;
}
}
Console.WriteLine(result == '\0' ? "None" : result);
medium
A. i
B. s
C. w
D. None
Solution
Step 1: Count character frequencies in "swiss"
s appears 3 times, w appears 1 time, i appears 1 time.
Step 2: Find first character with frequency 1 in original order
Order is s, w, i, s, s. The first with count 1 is 'w'.
Final Answer:
w -> Option C
Quick Check:
First unique char = w [OK]
Hint: Check counts, then scan string order for first count 1 char [OK]
Common Mistakes:
Choosing 'i' because it is unique but not first
Choosing 's' which repeats
Printing None incorrectly
4. Identify the bug in the following code that tries to find the first non-repeating character:
string input = "hello";
var freq = new Dictionary();
foreach (char c in input) {
freq[c] = freq[c] + 1;
}
char result = '\0';
foreach (char c in input) {
if (freq[c] == 1) {
result = c;
break;
}
}
Console.WriteLine(result == '\0' ? "None" : result);
medium
A. The result variable is not initialized
B. freq[c] is used before initialization causing KeyNotFoundException
C. The loop does not iterate over the string
D. The output statement is missing
Solution
Step 1: Analyze frequency counting loop
The code tries to increment freq[c] without checking if c exists in dictionary, causing error.
Step 2: Identify correct fix
Must check if freq contains c before incrementing or initialize freq[c] to 1 if missing.
Final Answer:
freq[c] is used before initialization causing KeyNotFoundException -> Option B
Quick Check:
Accessing uninitialized key causes error [OK]
Hint: Always check key exists before incrementing dictionary value [OK]
Common Mistakes:
Assuming dictionary auto-initializes keys
Ignoring exception details
Missing initialization logic
5. Given the string input = "aabbccddeeffg", which character will be the first non-repeating character using a hash-based approach? If none exists, return 'None'.
hard
A. f
B. a
C. None
D. g
Solution
Step 1: Count frequencies of each character
Characters a,b,c,d,e,f appear twice each; g appears once.
Step 2: Find first character with frequency 1 in string order
String order is a,a,b,b,c,c,d,d,e,e,f,f,g. The first with count 1 is 'g'.
Final Answer:
g -> Option D
Quick Check:
Only 'g' is unique and first non-repeating [OK]
Hint: Check counts, then scan string order for first unique char [OK]
Common Mistakes:
Choosing 'None' incorrectly
Picking repeated characters
Ignoring last unique character
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.