What if you could instantly know how many times each letter appears without counting by hand?
Why Character Frequency Counting in DSA Typescript?
Imagine you have a long letter from a friend and you want to know how many times each letter appears. Doing this by hand means reading each letter one by one and keeping track on paper.
Counting letters manually is slow and easy to mess up. You might lose track, forget counts, or make mistakes when the letter is very long.
Character frequency counting uses a simple method to automatically count how many times each letter appears. It saves time and avoids mistakes by using a small table to keep track while reading the letter once.
let text = "hello"; let countA = 0; let countB = 0; // ... and so on for each letter for (let i = 0; i < text.length; i++) { if (text[i] === 'a') countA++; else if (text[i] === 'b') countB++; // ... many ifs }
let text = "hello"; let frequency: {[char: string]: number} = {}; for (let char of text) { frequency[char] = (frequency[char] || 0) + 1; }
This lets you quickly find how often each character appears in any text, enabling tasks like text analysis, compression, or detecting patterns.
When you type on your phone, it can suggest words by knowing which letters you use most often. Character frequency counting helps phones learn your typing habits.
Manual counting is slow and error-prone.
Character frequency counting automates counting with a simple loop and a map.
This method is fast, reliable, and useful for many text-related tasks.
Practice
Solution
Step 1: Understand character frequency counting
Character frequency counting means counting how many times each character appears in a string.Step 2: Identify what it helps find
This counting helps us know the number of occurrences of each character, not the length or position.Final Answer:
How many times each character appears in the string -> Option AQuick Check:
Frequency counting = character counts [OK]
- Confusing frequency with string length
- Thinking it finds character positions
- Mixing frequency with first character only
Solution
Step 1: Identify data structure for frequency counting
We need an object to store keys (characters) and values (counts). An empty object is initialized with {}.Step 2: Check each option
const freq = new Map(); uses Map which is valid but not the simplest empty object. const freq = {}; correctly uses {}. const freq = []; is an array, not suitable. const freq = ''; is a string, not suitable.Final Answer:
const freq = {}; -> Option BQuick Check:
Empty object = {} [OK]
- Using array [] instead of object {}
- Using empty string '' instead of object
- Confusing Map with plain object initialization
const str = 'hello';
const freq: {[key: string]: number} = {};
for (const ch of str) {
freq[ch] = (freq[ch] || 0) + 1;
}
console.log(freq);Solution
Step 1: Loop through each character and count
Characters: 'h', 'e', 'l', 'l', 'o'. For each, increase count in freq object.Step 2: Calculate counts
'h' = 1, 'e' = 1, 'l' = 2 (appears twice), 'o' = 1.Final Answer:
{"h":1,"e":1,"l":2,"o":1} -> Option CQuick Check:
Count 'l' twice = 2 [OK]
- Counting 'l' only once
- Setting counts to zero
- Miswriting object output format
const str = 'abc';
const freq: {[key: string]: number} = {};
for (let i = 0; i <= str.length; i++) {
const ch = str[i];
freq[ch] = (freq[ch] || 0) + 1;
}
console.log(freq);Solution
Step 1: Check loop bounds
Loop runs from i = 0 to i <= str.length, which means i goes up to str.length (3). But string indices go from 0 to length-1 (2).Step 2: Identify out-of-bounds access
At i = 3, str[3] is undefined, causing freq[undefined] to be updated, which is incorrect.Final Answer:
Loop condition should be i < str.length, not i <= str.length -> Option DQuick Check:
Loop index must be less than length [OK]
- Using <= instead of < in loop condition
- Initializing freq as array instead of object
- Confusing for...in with for...of loops
"aabbc", which TypeScript code snippet correctly returns an object with only characters that appear exactly twice?Solution
Step 1: Count frequencies correctly
Loop through string, count each character's occurrences in freq object.Step 2: Filter characters with count exactly 2
Use Object.entries(freq) to get pairs, filter those with value 2, then convert back to object.Final Answer:
Code snippet that counts and filters for count === 2 -> Option AQuick Check:
Filter freq entries where value is 2 [OK]
- Filtering for count === 1 instead of 2
- Assigning fixed count 2 inside loop
- Returning keys instead of filtered object
Ready to prove it?
Pass the test and this pattern moves unknown
