给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
示例 2:
输入: s = "rat", t = "car"
输出: false
说明:
你可以假设字符串只包含小写字母。
进阶:
如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
解法:
// 解法1:
// 跟上一道的思想差不多,都是将字母存入hash对象,再比较每个对象的键值是否一致
/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var isAnagram = function(s, t) {
if(s.length !== t.length) return false;
let hash1 = {};
let hash2 = {};
for(let i = 0; i < s.length; i++ ){
if(!hash1[s[i]]) hash1[s[i]] = 1;
else hash1[s[i]]++;
}
for(let i = 0; i < t.length; i++ ){
if(!hash1[t[i]]) {
return false;
}
if(!hash2[t[i]]) hash2[t[i]] = 1;
else hash2[t[i]]++;
}
for(let key in hash1){
if(hash1[key] !== hash2[key]) return false;
}
return true;
};
// 解法2:
// 转换为字符串来比较
/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var isAnagram = function(s, t) {
if(s.length !== t.length) return false;
return s.split('').sort().join('') === t.split('').sort().join('');
};