js常见算法题
js判断字符串出现最多的字符
function strMax(str){
var len = str.length;
var obj = {}
var target = '';
var count = 0;
for (var i = 0; i < str.length; i++) {
if(obj[str[i]]){
obj[str[i]] +=1;
}else{
obj[str[i]] = 1;
}
}
for(x in obj){
if(obj[x]>count){
target = x;
count = obj[x];
}
}
return {
target:target,
count:count
}
}
strMax('aadssssbb111111111123');
// {target: "1", count: 10}
1~n 相加求和
function add(num){
if(num == 1){
return 1;
}
return add(num-1)+num;
}
console.log(add(100));
// 5050
数组去重
function uniqArr(arr){
var temp = [];
for(var i=0;i<arr.length;i++){
if(temp.indexOf(arr[i])<0){
temp.push(arr[i])
}
}
return temp;
}
uniqArr(['1','3','a','a','3','by','lidysun']);
// ["1", "3", "a", "by", "lidysun"]
或者es6中利用Array.from 和 Set去重
function uniqArr(arr){
return Array.from(new Set(arr));
}
uniqArr(['1','3','a','a','3','b','lidysun']);
// ["1", "3", "a", "b", "lidysun"]
#####计算数组内最大最小值
function arr_max_min(arr){
var max = arr[0];
var min = arr[0];
for(var i=1;i<arr.length;i++){
var item = parseFloat(arr[i]);
if(item > max){
max = arr[i];
}
if(item< min){
min = arr[i];
}
}
return {
max:max,
min:min
};
}
arr_max_min([888,999,66,'wechat:',820262236]);
//{max: 820262236, min: 66}
或者借助Math.max.apply()
函数
function arr_max_min(arr){
var max = Math.max.apply(null,arr);
var min = Math.min.apply(null,arr);
return {
max:max,
min:min
}
}
arr_max_min([888,999,66,820262236]);
// {max: 820262236, min: 66}
判断目标字符串(由字母和数字组成)中某字符出现的次数(华为机考题)
function strCount(str,s,stric){
var reg = /^[a-zA-Z0-9]*$/;
var count = 0;
if(!reg.test(str)){
console.log('str格式不正确!');
return 0;
}else{
if(!stric){
str = str.toLowerCase();
s = s.toLowerCase();
}
for (var i = 0; i <str.length; i++) {
if(str[i]==s){
count+=1;
}
}
}
return count;
}
strCount('aaaaAba1a','a'); //7
strCount('aaaaAbab1a','B'); //2