242. 有效的字母异位词
js
;(function () {
/**
* 242. 有效的字母异位词
* 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
* 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
*
* 输入: s = "anagram", t = "nagaram"
* 输出: true
*
* 输入: s = "rat", t = "car"
* 输出: false
*
* 进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
*/
function isAnagram(s: string, t: string): boolean {
// 方法一
// if (s.length !== t.length) {
// return false
// }
// let sArr = s.split('')
// let tArr = t.split('')
// sArr.sort((a, b) => a.charCodeAt(0) - b.charCodeAt(0))
// tArr.sort((a, b) => a.charCodeAt(0) - b.charCodeAt(0))
// // console.log(sArr, tArr)
// return sArr.join('') === tArr.join('') || false
// 方法二: 耗时较多
// if (s.length !== t.length) {
// return false
// }
// let bool = true;
// for(const c of s) {
// t = t.replace(c, '')
// }
// return t.length === 0 || false
// 方法三
if (s.length !== t.length) {
return false
}
let cnt = new Array(26).fill(0)
let aCharCode = 'a'.charCodeAt(0)
for (const c of s) {
cnt[c.charCodeAt(0) - aCharCode]++
}
for (const c of t) {
cnt[c.charCodeAt(0) - aCharCode]--
}
return cnt.every((i) => i === 0) || false
// 方法四
// return s.length == t.length && [...Array.from(s)].sort().join('') === [...Array.from(t)].sort().join('')
}
let s = 'anagram',
t = 'nagaram'
console.log(isAnagram(s, t))
})()