Skip to main content

21. Group Anagrams

mediumAsked at PayPal

Group strings that are anagrams of each other into arrays. PayPal uses this hash-map grouping problem to evaluate key normalization skills — a pattern that appears in transaction deduplication and merchant category clustering in payment systems.

By Alex Chen, Founder, InterviewChamp.AI · Last verified

Source citations

Public interview reports confirming this problem appears in PayPal loops.

  • LeetCode Discuss (2025)PayPal SWE reported group anagrams as a warm-up medium in their OA
  • Reddit r/cscareerquestions (2025)PayPal interview prep thread cites anagram grouping as a common hash-map problem

Problem

Given an array of strings strs, group the anagrams together. You can return the answer in any order. An anagram is a word formed by rearranging the letters of another, using all the original letters exactly once.

Constraints

  • 1 <= strs.length <= 10000
  • 0 <= strs[i].length <= 100
  • strs[i] consists of lowercase English letters

Examples

Example 1

Input
strs = ["eat","tea","tan","ate","nat","bat"]
Output
[["bat"],["nat","tan"],["ate","eat","tea"]]

Example 2

Input
strs = [""]
Output
[[""]]

Approaches

1. Sort each string as key

Sort the characters of each string alphabetically; anagrams produce the same sorted key. Group strings by this canonical key in a hash map.

Time
O(n * k log k) where k is max string length
Space
O(n * k)
function groupAnagrams(strs) {
  const map = new Map();
  for (const s of strs) {
    const key = s.split('').sort().join('');
    if (!map.has(key)) map.set(key, []);
    map.get(key).push(s);
  }
  return [...map.values()];
}

Tradeoff: Simple and correct; O(k log k) per string for the sort. Discuss the character-count alternative if interviewer pushes for optimal.

2. Character frequency count as key

Instead of sorting, build a 26-length frequency count array per string and serialize it as the map key. This reduces per-string work from O(k log k) to O(k), which matters for long strings.

Time
O(n * k)
Space
O(n * k)
function groupAnagrams(strs) {
  const map = new Map();
  for (const s of strs) {
    // Build a 26-char frequency array
    const count = new Array(26).fill(0);
    for (const ch of s) {
      count[ch.charCodeAt(0) - 97]++;
    }
    // Serialize as canonical key (e.g., '1#0#0#...#1#...')
    const key = count.join('#');
    if (!map.has(key)) map.set(key, []);
    map.get(key).push(s);
  }
  return [...map.values()];
}

Tradeoff: O(k) per string instead of O(k log k). Using '#' as a separator prevents collisions between counts like [1,10] vs [10,1]. At PayPal, frame this as building a canonical transaction fingerprint for O(1) grouping.

PayPal-specific tips

PayPal interviews focus on payment processing, fraud detection logic, financial reconciliation algorithms, and distributed transaction design. Hash maps, sliding windows, and two-pointer techniques appear frequently.

Common mistakes

  • Using count.join('') without a separator — '110' is ambiguous between counts [11,0] and [1,10]
  • Forgetting that the empty string is valid input — it should map to a group of its own
  • Sorting in-place and modifying the original strings — always sort a copy

Follow-up questions

An interviewer at PayPal may pivot to one of these next:

  • Group strings by the same set of character counts with different arrangements (k-anagram variant)
  • What if the alphabet is Unicode, not just lowercase English letters?
  • Find the largest anagram group in O(n log n) — what changes?

Solve it now

Free. No sign-up. Python and JavaScript run instantly in your browser.

Output

Press Run or Cmd+Enter to execute

FAQ

Why use '#' as a separator in the frequency key?

Without a separator, counts [1, 10] and [10, 1] both serialize to '110', creating false collisions. A delimiter like '#' makes each position unambiguous.

When should I prefer the sort approach vs. frequency count?

Sort is cleaner and sufficient for most interviews. Prefer frequency counting when string lengths are large (k > 100) or when the interviewer explicitly asks for an O(nk) solution.

Practice these live with InterviewChamp.AI

Drill Group Anagrams and other PayPal interview questions under real-loop conditions with instant feedback on your reasoning, complexity claims, and code.

Practice these live with InterviewChamp.AI →