linye's Blog

全端工程師心得分享

0%

[LeetCode]242. ValidAnagram

Data Structure I 筆記撰寫計畫

敘述

這是 Data Structure I 的第六天第三個題目,總共有三題。

  • 難度: Easy
  • 花費時間: 1小時
  • 題目

傳入兩個字串 st ,如果 st 的字謎的話,回傳 true ,如果不是,回傳 false

字謎(anagram): 是指將原本的詞字母重組後得到另一個詞。

點我開啟限制與範例

限制:

  • 1 <= s.length, t.length <= 5 * 104
  • s and t consist of lowercase English letters.

Example 1:

1
2
Input: s = "anagram", t = "nagaram"
Output: true

Example 2:

1
2
Input: s = "rat", t = "car"
Output: false

筆記

使用類似 383. Ransom Note 的做法,先遍歷一次 s 做出 sHashTable ,然後再遍歷一次 t 刪除值,如果刪光了就回傳 true ,如果刪到一半沒得刪那就回傳 false

程式碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var isAnagram = function (s, t) {

if (s.length != t.length) return false;

let sMap = new Map;
for (let i = 0; i < s.length; i++) {
if (sMap.get(s[i]) != undefined) {
sMap.set(s[i], sMap.get(s[i]) + 1);
} else {
sMap.set(s[i], 1);
}
}
for (let i = 0; i < t.length; i++) {
if (sMap.get(t[i])) {
sMap.set(t[i], sMap.get(t[i]) - 1);
} else {
return false;
}
}
return true;
};

成績

點我開啟舊寫法/失敗寫法