242题
题干:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。
解析:对比两个字符串
1.先排序再对比 快排 n*logn
2.map计数
3.空间更省
var isAnagram = function (s, t) {
var chars = Array(26).fill(0);
for (var i = 0; i < s.length; i++) {
chars[s.charCodeAt(i) - 97]++;
}
for (var i = 0; i < t.length; i++) {
chars[t.charCodeAt(i) - 97]--;
}
for (var i = 0; i < chars.length; i++) {
if (chars[i] !== 0) {
return false;
}
}
return true;
};
4.不采用数组计数,直接在字符串上操作更加迅速
考虑循环的开始条件与终止条件,循环中间的操作
var isAnagram = function(s, t) {
while(s!==t && s.length===t.length){
const reg = new RegExp(s[0], 'g');
s = s.replace(reg,'')
t = t.replace(reg,'')
if(s===t) return true;
if(s.length!==t.length) return false;
}
return s===t
};
1题 两数之和
1.暴力法 两层循环依次查找 n^2的复杂度
2.x+y = target ie y = target - x
将寻找y的过程改为在set or map中的读操作(复杂度o(1)),这样在遍历x的过程中,存储下需要的y,以后每一次经过x的时候 先去map中去查询是否满足