-
-
Notifications
You must be signed in to change notification settings - Fork 100
/
Copy pathvalid-anagram.js
48 lines (47 loc) · 1.29 KB
/
valid-anagram.js
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
// 排序+双指针
var isAnagram = function (s, t) {
// 字符串转数组
let sArr = s.split('')
let tArr = t.split('')
if (sArr.length !== tArr.length) return false // 不同数量
// 对字符串进行排序
sArr.sort((a, b) => a.localeCompare(b))
tArr.sort((a, b) => a.localeCompare(b))
for (let i = 0; i < sArr.length; i++) {
// 两个字符串数组 有一个元素位置不同 则为错误
if (sArr[i] !== tArr[i]) {
return false
}
}
return true
}
// 哈希 计算字符数量
// var isAnagram = function (s, t) {
// let m = new Map()
// // 计算s的字符数量
// for (let key of s) {
// if (m.has(key)) {
// let total = m.get(key)
// m.set(key, total + 1)
// } else {
// m.set(key, 1)
// }
// }
// for (let key of t) {
// // 清空已有字符数量
// if (m.has(key)) {
// let total = m.get(key)
// m.set(key, total - 1)
// if (total - 1 === 0) m.delete(key)
// } else {
// // 有其他值 添加
// m.set(key, 1)
// }
// }
// return m.size === 0 // map被清空说明两边字符相等 否则数量有差异
// };