---
title: '242. Valid Anagram'
description: Given two strings s and t, return true if t is an anagram of s, and false otherwise
sidebar:
  label: 'Valid Anagram'
  badge: 'Easy'
---

Hash Table

::::warning
What if the inputs contain Unicode characters? How would you adapt your solution to such a case?
::::

### Example 1:
- Input: `s = "anagram", t = "nagaram"`
- Output: `true`

### Example 2:
- Input: `s = "rat", t = "car"`
- Output: `false`

### Constraints:

- `1 <= s.length, t.length <= 5 * 10^4`
- `s` and `t` consist of lowercase English letters.

## Approach

```mermaid
flowchart TD
  S(["isAnagram(s, t)"]) --> I["freq: count every char of s"]
  I --> L{"more char c in t?"}
  L -- no --> E(["return true"])
  L -- yes --> Q{"freq[c] missing or 0?"}
  Q -- yes --> R(["return false — t has a char s cannot cover"])
  Q -- no --> D["freq[c] -= 1"]
  D --> L
```

## Solution

```js
/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isAnagram = function(s, t) {
  let freq = {};
  for (let c of s) freq[c] = (freq[c] || 0) + 1;
  
  for (let c of t) {
    if(!freq[c] || freq[c] === 0){
      return false;
    }
    freq[c] = freq[c] - 1;
  }
  return true;
};
```

## Explanation

[Valid Anagram - Leetcode 242 - Python](https://www.youtube.com/watch?v=9UtInBqnCgA)
