📖 Scenario: Imagine you are reading a secret message where some letters appear many times, but you want to find the first letter that appears only once. This helps in decoding or understanding the message better.
🎯 Goal: You will build a small Java program that finds the first character in a given word that does not repeat anywhere else in that word. You will use a hash map to count characters and then find the first unique one.
📋 What You'll Learn
Create a string variable with a specific word
Create a hash map to count character frequencies
Use a loop to fill the hash map with counts
Use another loop to find the first non-repeating character
Print the first non-repeating character or a message if none found
💡 Why This Matters
🌍 Real World
Finding the first non-repeating character helps in text analysis, decoding secret messages, and improving search algorithms.
💼 Career
This technique is useful for software developers working on string processing, data cleaning, and building efficient search or filtering features.
Progress0 / 4 steps
1
Create the input string
Create a string variable called input and set it to the exact value "swiss".
DSA Java
Hint
Use String input = "swiss"; to create the word.
2
Create a hash map to count characters
Create a HashMap<Character, Integer> called charCount to store character counts. Initialize it with new HashMap<>().
DSA Java
Hint
Use HashMap<Character, Integer> charCount = new HashMap<>(); to create the map.
3
Count characters in the string
Use a for loop with variable ch to go through each character in input.toCharArray(). For each ch, update charCount by adding 1 to its current count or setting it to 1 if not present.
DSA Java
Hint
Use charCount.getOrDefault(ch, 0) + 1 to update counts.
4
Find and print the first non-repeating character
Use a for loop with variable ch to go through input.toCharArray(). Inside the loop, check if charCount.get(ch) equals 1. If yes, print ch and break the loop. If no such character is found, print "No non-repeating character found".
DSA Java
Hint
Print the first character with count 1 using System.out.println(ch); and stop the loop with break;.
Practice
(1/5)
1. What does the "First Non Repeating Character Using Hash" algorithm primarily do?
easy
A. Reverses the string using a hash map
B. Counts the total number of characters in a string
C. Sorts characters of a string in alphabetical order
D. Finds the first character in a string that appears only once
Solution
Step 1: Understand the problem goal
The algorithm aims to find the first character in the string that does not repeat anywhere else.
Step 2: Role of hash map
A hash map stores character counts to quickly check which characters appear once.
Final Answer:
Finds the first character in a string that appears only once -> Option D
Quick Check:
First non repeating character = Finds the first character in a string that appears only once [OK]
Hint: Look for the first unique character using counts [OK]
Common Mistakes:
Thinking it counts total characters only
Confusing sorting with finding unique character
Assuming it reverses the string
2. Which Java collection is best suited to store character counts for this problem?
easy
A. ArrayList<Character>
B. HashMap
C. LinkedList<Character>
D. TreeSet<Character>
Solution
Step 1: Identify data structure needs
We need to map each character to its count, so a key-value structure is required.
Step 2: Choose appropriate Java collection
HashMap stores characters as keys and their counts as values efficiently.
Final Answer:
HashMap -> Option B
Quick Check:
Use HashMap for character counts [OK]
Hint: Use HashMap for key-value pairs of char and count [OK]
Common Mistakes:
Using list which doesn't map keys to counts
Using TreeSet which stores unique sorted elements only
Using LinkedList which is not key-value based
3. What is the output of the following Java code snippet?
String s = "swiss";
HashMap map = new HashMap<>();
for(char c : s.toCharArray()) {
map.put(c, map.getOrDefault(c, 0) + 1);
}
for(char c : s.toCharArray()) {
if(map.get(c) == 1) {
System.out.println(c);
break;
}
}
medium
A. w
B. s
C. i
D. No output
Solution
Step 1: Count character frequencies
Characters and counts: s=3, w=1, i=1.
Step 2: Find first character with count 1
Iterate string: 's'(3), 'w'(1) -> first non repeating is 'w'.
Final Answer:
w -> Option A
Quick Check:
First unique char in "swiss" = w [OK]
Hint: Check counts then first unique char in order [OK]
Common Mistakes:
Choosing 's' which repeats
Choosing 'i' which is unique but appears after 'w'
Assuming no output if not careful
4. Identify the error in this code snippet for finding the first non repeating character:
String s = "hello";
HashMap map = new HashMap<>();
for(int i = 0; i < s.length(); i++) {
map.put(s.charAt(i), 1);
}
for(int i = 0; i < s.length(); i++) {
if(map.get(s.charAt(i)) == 1) {
System.out.println(s.charAt(i));
break;
}
}
medium
A. The map.put always sets count to 1, ignoring repeats
B. The loop should start from 1, not 0
C. The map should use Character keys, not int
D. The break statement is missing
Solution
Step 1: Analyze map population logic
The code sets count to 1 for every character without incrementing, so repeats are not counted.
Step 2: Effect on finding non repeating character
Since all counts are 1, the code incorrectly treats all characters as unique.
Final Answer:
The map.put always sets count to 1, ignoring repeats -> Option A
Quick Check:
Count update missing causes wrong results [OK]
Hint: Increment count instead of setting 1 every time [OK]
Common Mistakes:
Not incrementing counts in map
Wrong loop indices
Confusing key types in map
5. Given the string "aabbccddeeffg", which character will be the first non repeating character using the hash method? What if the string is "aabbccddeeffggh"?
hard
A. First: g, Second: g
B. First: a, Second: h
C. First: g, Second: h
D. First: h, Second: h
Solution
Step 1: Analyze first string "aabbccddeeffg"
All characters except 'g' appear twice; 'g' appears once, so first non repeating is 'g'.
Step 2: Analyze second string "aabbccddeeffggh"
Now 'g' appears twice, 'h' appears once, so first non repeating is 'h'.
Final Answer:
First: g, Second: h -> Option C
Quick Check:
Check counts carefully for each string [OK]
Hint: Check counts carefully; last unique changes with input [OK]
Common Mistakes:
Assuming first character is always unique
Ignoring updated counts in second string
Confusing repeated characters as unique
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.