DIGITAL GURU
Java DSA Portfolio

Character Frequency & String Compression

Count character frequencies, check anagrams, and implement Run-Length String Compression.

Anuj Kumar Singh Written by Anuj Kumar Singh (Lead Engineer, 13+ yrs exp) 5 min read Verified Spring Boot 3+ Guide

Real-World Analogy

Run-Length String Compression is turning `"aaabbc"` into `"a3b2c1"`—saving space when repeating characters appear sequentially.

Frequency Counting & Compression

Use an array of size 26 (`int[] freq = new int[26]`) to count ASCII character occurrences in $O(N)$ time.

Production Code Example:

AnagramCheck.java
public class AnagramCheck {
    public boolean isAnagram(String s, String t) {
        if (s.length() != t.length()) return false;
        int[] count = new int[26];
        for (int i = 0; i < s.length(); i++) {
            count[s.charAt(i) - 'a']++;
            count[t.charAt(i) - 'a']--;
        }
        for (int c : count) if (c != 0) return false;
        return true;
    }
}

Key Complexity & Algorithmic Takeaways:

When implementing Character Frequency & String Compression in coding interviews and production applications, keep these core guidelines in mind:

  • Time Complexity Analysis: Always evaluate best-case, average-case, and worst-case time complexities ($O(1)$, $O(\log n)$, $O(n)$, $O(n \log n)$, $O(n^2)$).
  • Space Complexity & Memory Bounds: Account for auxiliary memory usage, call stack frame recursion overhead, and heap allocations.
  • Edge Cases & Validation: Test empty inputs, null pointers, single-element collections, duplicate values, and integer overflow bounds.
  • Optimal vs Naive Solutions: Start with a clear brute-force solution, then optimize using techniques like Hashing, Two Pointers, Windowing, or Dynamic Programming.

Summary Takeaway:

Mastering Character Frequency & String Compression provides the foundational problem-solving skills needed to pass technical coding interviews at top tech companies and write ultra-performant software systems.

Unicode Extension

For extended Unicode characters, replace `int[26]` with a `HashMap`.