mirror of
https://github.com/prdlk/leetcode.git
synced 2026-11-02 13:12:44 +00:00
66 lines
1.3 KiB
Plaintext
66 lines
1.3 KiB
Plaintext
---
|
|
title: '242. Valid Anagram'
|
|
description: Given two strings s and t, return true if t is an anagram of s, and false otherwise
|
|
icon: dot
|
|
topics:
|
|
- { name: "Hash Table", slug: "hash-table" }
|
|
- { name: "String", slug: "string" }
|
|
- { name: "Sorting", slug: "sorting" }
|
|
video: "9UtInBqnCgA"
|
|
sidebar:
|
|
label: 'Valid Anagram'
|
|
badge: 'Easy'
|
|
---
|
|
|
|
::::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;
|
|
};
|
|
```
|