-
题目 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
示例 2:
输入: s = "rat", t = "car"
输出: false
提示:
1 <= s.length, t.length <= 5 * 104
s 和 t 仅包含小写字母
-
代码
var isAnagram = function (s, t) {
let aa = s.split('').sort().join('');
let bb = t.split('').sort().join('');
if (aa === bb) {
return true;
} else {
return false;
}
};
var isAnagram2 = function (s, t) {
const CHARCODE_A_LC = 97
const lowercaseAlphabet = new Array(26)
.fill(null)
.map((v, i) => String.fromCharCode(CHARCODE_A_LC + i));
let map = {};
for (let v of lowercaseAlphabet) {
map[v] = 0;
}
for (let val of s) {
if (map[val] >= 0) {
map[val]++;
}
}
for (let val of t) {
if (map[val] >= 1) {
map[val]--;
}
}
let cc = Object.values(map);
let res = cc.some(val => val !== 0);
if (!res) {
return true;
} else {
return false;
}
}
let a = "raat";
let b = "taar";
console.log(isAnagram2(a, b));
-
不用单独建立hash表,直接一个建表,一个查找
var isAnagrams = function (s, t) {
const hash = [];
for (let val of s) {
if (!hash[val]) {
hash[val] = 1;
} else {
hash[val]++;
}
}
for (let val of t) {
if (!hash[val]) {
return false;
} else {
hash[val]--;
}
}
return Object.values(hash).every(val => val == 0);
}
var isSameArray = function (a, b) {
if(a.length == b.length) {
return a.every((val, index) => val == b[index]);
}
return false;
}
let a = [1,2,3];
let b = [1,2,3];
console.log(isSameArray(a,b));
== 和 === 的区别(补充)
“==":
-
两边数据类型相同,则进行"==="比较 -
两遍数据类型不同,则类型转换后比较: - 一个是字符串,一个是数字类型,会将字符串转为数字类型
- ` '12' == 12
- null == undefined`
"===":
-
两边数据类型不同,返回false -
类型相同,比较: - 两边为数值类型且为同一个值,返回true;
- 两边为字符类型且对应位置字符相同,返回true;
- 两边为引用类型且**引用同一个对象或函数**,返回true;
|