Q1 去掉一組整型數組重覆的值 比如輸入: [1,13,24,11,11,14,1,2] 輸出: [1,13,24,11,14,2] 需要去掉重覆的11 和 1 這兩個元素。 /** * unique an array **/ let unique = function(arr) { let has ...
Q1 去掉一組整型數組重覆的值
比如輸入: [1,13,24,11,11,14,1,2]
輸出: [1,13,24,11,14,2]
需要去掉重覆的11 和 1 這兩個元素。
/**
* unique an array
**/
let unique = function(arr) {
let hashTable = {};
let data = [];
for(let i = 0, l = arr.length; i < l; i++) {
if (!hashTable[arr[i]]) {
hashTable[arr[i]] = true;
data.push(arr[i]);
}
}
return data
}
module.exports = unique;
Q2 統計一個字元串出現最多的字母
給出一段英文連續的英文字元竄,找出重覆出現次數最多的字母
前面出現過去重的演算法,這裡需要是統計重覆次數。輸入 : afjghdfraaaasdenas輸出 : a
function findMaxDuplicateChar(str) {
if(str.length == 1) {
return str;
}
let charObj = {};
for(let i = 0;i < str.length; i++) {
if(!charObj[str.charAt(i)]) {
charObj[str.charAt(i)] = 1;
}else{
charObj[str.charAt(i)] += 1;
}
}
let maxChar = '',
maxValue = 1;
for(var k in charObj) {
if(charObj[k] >= maxValue) {
maxChar = k;
maxValue = charObj[k];
}
}
return maxChar;
}
module.exports = findMaxDuplicateChar;
Q3 隨機生成指定長度的字元串
實現一個演算法,隨機生成指制定長度的字元竄。
比如給定 長度 8 輸出 4ldkfg9j
function randomString(n) {
let str = 'abcdefghijklmnopqrstuvwxyz9876543210';
let tmp = '',
i = 0,
l = str.length + 1;
for (i = 0; i < n; i++) {
tmp += str.charAt(Math.floor(Math.random() * l));
}
return tmp;
}
module.exports = randomString;