第一题:求获胜者,如果票数相当,按照字母排序,a>b>c,A>B>C,如果字母相同,则字母少的在前面,比如Luc>Lucy 输入: Tom,Lily,Tom,Lucy,Lucy,Jack 输出: Lucy
function find(arr) { let map = {}; for (let name of arr) { if (/[a-zA-Z]/g.test(name)) { if (map[name]) { map[name]++; } else { map[name] = 1; } } else { return 'error0.0001'; } } let a = Object.entries(map).sort((a, b) => b[1] - a[1]); let tmp = a.filter(e => e[1] === a[0][1]); tmp.sort((a, b) => a[0].charCodeAt() - b[0].charCodeAt()); return tmp[0][0]; } console.log(find(['Tom', 'Lily', 'Tom', 'Lucy', 'Lucy', 'Jack']));
第二题:字符串匹配 输入: read read[addr=0x17,mask=0xff,val=0x7],read_his[addr=0xff,mask=0xff,val=0x1],read[addr=0xf0,mask=0xff,val=0x80] 输出: 0x17 0xff 0x7 0xf0 0xff 0x80
function find(str) { let s = str.split(' ')[0]; // 注意要写动态的正则的时候,[]是正则的匹配方法,所以如果想要匹配'[]'这个字符的话,需要两个斜杠\\来转义 let reg = new RegExp(s + '\\[(addr=0[xX][0-9a-zA-Z]+),mask=(0[xX][0-9a-zA-Z]+),val=(0[xX][0-9a-zA-Z]+)\\]', 'g'); // 全局匹配不能少 let res = str.match(reg); if (!res.length) return 'FAIL'; res.forEach(s => { console.log(s.match(/0[xX][0-9a-zA-Z]+/g).join(' ')); }); } let str = 'read read[addr=0x17,mask=0xff,val=0x7],read_his[addr=0xff,mask=0xff,val=0x1],read[addr=0xf0,mask=0xff,val=0x80]'; find(str);
手撕代码:找出数组中重复的数字;要求不能开辟新空间;时间复杂度小于 O(N^2)
// 先快排再遍历 function quickSort(array, L = 0, R = array.length - 1) { if (L >= R) return; var id = L; var i = L; var j = R; var base = array[L]; while (i < j) { while (i < j && array[j] >= base) { j--; } while (i < j && array[i] <= base) { i++; } [array[i], array[j]] = [array[j], array[i]]; } [array[id], array[i]] = [array[i], array[id]]; quickSort(array, L, i - 1); quickSort(array, i + 1, R); return array; } function findNum(nums) { quickSort(nums, 0, nums.length - 1); for (let i = 0; i < nums.length - 1; i++) { if (nums[i] === nums[i + 1]) { return nums[i]; } } } console.log(findNum([2, 4, 3, 1, 3, 5, 6, 3]));
hash 原理
知道哪些数据结构
学过 python,用 python 做了什么
这些前端技术栈是课程学习的还是自学的
在实验室做了什么?收获是什么
本文作者:毛超颖
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!