new Map() 类似于{}只是新增了很多属性和方法
1. Map的属性
size表示长度
2. Map的方法
clear 清空数据
delete删除某一个键值
forEach遍历
get获取key值
set key跟value赋值
has 是否有这个key
3. Map的实用 leedcode第一题的两数之和
var twoSum = function (nums, target) {
let arrMap = new Map();
let len = nums.length;
for (let i = 0; i < len; i++) {
let complement = target - nums[i];
if (arrMap.has(complement)) {
return [arrMap.get(complement), i]
}
arrMap.set(nums[i], i);
// arrMap.set(nums[i], i);
}
throw new Error('No two sum solution')
};
new Set类似于[] array 只有值
1. Set的属性
size表示长度
2. Set的方法
add 添加数据
clear 清空数据
delete 删除某一个值
forEach 遍历
has 是否有这个value
3. Set的实用 leedcode第三题 无重复字符的最长子串
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function (s) {
let nLen = s.length;
let maxLen = 0;
for (let i = 0; i < nLen; i++) {
for (let j = i + 1; j <= nLen; j++) {
if (isUnique(s, i, j)) {
maxLen = maxLen < (j - i) ? (j - i) : maxLen;
} else {
//继续以下一个字符作为首字符
break;
}
}
}
return maxLen;
};
function isUnique(s, start, end) {
let charSet = new Set();
for (let i = start; i < end; i++) {
if (charSet.has(s[i])) {
return false;
}
charSet.add(s[i]);
}
return true;
}