ASCII
常用
- 0-9:48-57
- A-Z:65-90
- 小写:97-122
规则
- 0 ~ 9 <A ~ Z < a ~ z
- 数字比字母要小。如 “7”<“F”;
- 数字0比数字9要小,并按0到9顺序递增。如 “3”<“8”
- 同个字母的大写字母比小写字母要小32。如“A”<“a” 。
- 字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z” ;
- “A”为65;“a”为97;“0”为 48
极限值
- -Infinity === Number.NEGATIVE_INFINITY
- Infinity === Number.POSITIVE_INFINITY
字典序
以字母顺序排列,与个数无关
a, b, c
ab, acb, ace
1, 11, 12, 2, 3, 4,
随机数
Math.random();
返回介于 0(包含) ~ 1(不包含) 之间的一个随机数 eg:
Math.random();
0.7269116644302132
- 在连续整数中取得一个随机整数 数值 = Math.floor(Math.random() * 可能值的总数 + 第一个可能的值) eg:产生1-10的随机数
let rand1 = Math.floor(Math.random() * 10 + 1);
编写产生startNumber至endNumber随机数的函数
function selectFrom(startNumber, endNumber) {
var choice = endNumber - startNumber + 1;
return Math.floor(Math.random() * choice + startNumber)
}
var rand2 = selectFrom(2,8);//产生2至8的随机数
进制转换
- 使用parseInt('numberString',numberString的进制); 转成十进制
const p = '10';//这里的10是二进制的10
const value = parseInt(p,2); // value = 2;
- 十进制转成对应的进制 num.toString(2); //2代表要转成2进制
const num = 3;
const value = num.toString(2); // value = '11';
- BigInt('numString'); 兼容大数 注意如果numString是二进制,要在numString前面加个0b,代表当前的numString是个二进制的数,eg:
const p = BigInt('0b' + '10101010101010101010').toString(10);//699050
const p = BigInt('0b' + '11').toString(10); //p = 3
取整
- 去掉小数部分
方法一: parseInt
const str = '6.7';
cosnt r = str.parseInt(str);// r = 6;
方法二:位移运算 >> 0
因为 x >> y 会先将x转成二进制,然后向右移动y位,也就是删掉后面y位,用新的二进制数再转成十进制; 而x >> 0就是会先将x转成二进制,抛弃掉小数部分,再又转成十进制。所以就能做到取整
const x = 6.7;
cosnt r = x >> 0;// r = 6;
方法三:位移运算 ~~(x)
~是按位取反运算,~~是取反两次。
~~的作用是去掉小数部分,因为位运算的操作值要求是整数,其结果也是整数,所以经过位运算的都会自动变成整数
const x = 6.7;
cosnt r = ~~(x);// r = 6;
方法四:Math.floor 注意正负区别
const x = 6.7;//x为正数
cosnt r = Math.floor(x);// r = 6;
const x = -6.7;//x为正数
cosnt r = Math.floor(x);// r = -7;
方法五: Math.trunc 只保留整数部分
const x = 6.7;
cosnt r = Math.trunc(x);// r = 6;
const x = -6.7;
cosnt r = Math.trunc(x);// r = -6;
- 向上取整
Math.ceil(3/2); // 2
- 四舍五入
Math.round(3/2) // 2
数组
- 将map转成数组
const map = new Set(nums);
const newArray = Array.from(map);
- 删除数组中的某个元素
splice()
let nums = [1,2,2,4,5];
const index = nums2.indexOf(2);
if (index > -1) {
const p = nums2.splice(index,1);
// p = [2];
// nums2 = [1,2,4,5];
}
- 排序
sort();
const arr = new Array("orange", "mango", "banana", "sugar");
const sorted = arr.sort();
console.log("Returned string is : " + sorted ); // banana,mango,orange,sugar
还可以自定义排序函数
//注意返回值是sort内部return的是number
[2, 5, 8, 1, 4].sort((a,b) => {
return a > b ? 1:-1;
}); //[ 1, 2, 4, 5, 8]
[2, 5, 8, 1, 4].sort((a,b) => {
return a > b ? -1:1;
}); //[ 1, 2, 4, 5, 8]
- 多重数组初始化
// const matrix = Array(n).fill(0).map(() => Array(m).fill(0));//这种方式是错误的 因为如果 fill 的参数为引用类型,会导致都执行同一个引用类型
const matrix = Array(2).fill(0).map(() => Array(2).fill(0));
//matrix : [ [ 0, 0 ], [ 0, 0 ], [ 0, 0 ] ]
- 二维降一维
list = [[1,1,1],[2,2,2]];
list.flat();//二维降一维 => [1,1,1,2,2,2]
Map
- 遍历
let nameSiteMapping = new Map();
nameSiteMapping.set("Google", 1);
nameSiteMapping.set("Runoob", 2);
nameSiteMapping.set("Taobao", 3);
// 迭代 Map 中的key
for (let key of nameSiteMapping.keys()) {
console.log(key);
}
// 迭代 Map 中的 value
for (let value of nameSiteMapping.values()) {
console.log(value);
}
// 迭代 Map 中的 key => value
for (let entry of nameSiteMapping.entries()) {
console.log(entry[0], entry[1]);
}
// 使用对象解析
for (let [key, value] of nameSiteMapping) {
console.log(key, value);
}
- 快速初始化
const map = new Map([['a',1],['b',2]]);
- 做函数参数
//声明
const dfs = (path:number[],indexMap:Map<number,number>) => {}
//调用
dfs([],new Map());
- 回溯
const typeDfs = (index:number, typeMap:Map<number,number>) => {
if (index === 0) {
return;
}
index--;
for (let i = 0; i < 4; i++) {
const item = i+1;
if (typeMap.get(item) === 1) {
typeMap.delete(item);
//回溯
typeDfs(index,typeMap);
} else {
typeMap.set(item,1);
typeDfs(index,typeMap);
//回溯
typeMap.delete(item);
}
}
}
typeDfs(presses,new Map());
位运算
- 异或运算(XOR) ^
任意数字对0异或,都等于任意数字本身
0 ^ 0 = 0;
0 ^ 1 = 1;
任意数字异或本身,都等于0;
1 ^ 1 = 0;
a ^ a = 0;
异或交换律
a ^ a ^ b = (a ^ a) ^ b = 0 ^ b = b
指数表示
Math.pow(-2, 31) = -2^32; Math.pow(2, 31) = 2^32;
字符串
- 删除空格
"a man".replace(/\s/g,""); //aman
- 删除非0-9a-zA-Z 中的字符
"a man, a plan, a canal: panama".replace(/[^0-9a-zA-Z]/g,''); //amanaplanacanalpanama\
正则
- 是否是字母
return /^[a-zA-Z]+$/.test(str);
- 是否是数字
return /^[0-9]+$/.test(str);
leetCode多语言题解MarkDown写法
```typescript解法一 []
这里是typescript code
```rust解法一 []
这里是rust code