JavaScript算法笔试题

判断一个字符串出现次数最多的字符,统计这个次数

1、

var str = 'asdfssaaasasasaa';
function test(str) {
    var json = {};
    for (var i = 0; i < str.length; i ++) {
        if (!json[str.charAt(i)]) {
            json[str.charAt(i)] = 1;
        } else {
            json[str.charAt(i)] ++;
        }
    }
    
    var num = 0;
    var value = 0;
    for (var i in json) {
        if (json[i] > num) {
            num = json[i];
            value = i;
        }
    }
    return '出现次数最多的是:' + value + ' 出现' + num + ' 次';
}

alert(test(str));

2、

var str = 'asdfssaaasasasaa';
function test(str) {
    var obj = {};
    var num = 0;
    var value = '';
    for (var i = 0; i < str.length; i++) {
        if (!obj[str[i]]) {
            obj[str[i]] = [];
        }
        obj[str[i]].push(str[i]);
    }
    for (var attr in obj) {
        if (num < obj[attr].length) {
            num = obj[attr].length;
            value = obj[attr][0];
        }
    }
    return '出现次数最多的是:' + value + ' 出现' + num + ' 次'
}

 alert(test(str));

字符串转为驼峰写法

1、

var str = 'border-bottom-color';
function test(str) {
    var arr = str.split('-');
    for (var i = 1; i < arr.length; i++) {
        arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].substring(1); // [border,Bottom,Color]
    }
    return arr.join('');
}
alert(test(str));

2、

var str = 'border-bottom-color';
function test(str) {
    var reg = /-(\w)/g;
    return str.replace(reg,function($0,$1) {
        return $1.toUpperCase();
    })
}
alert(test(str));

给字符串加千分符

1、

var str = '93456387487';
function test(str) {
    var iNum = str.length % 3;
    var prev = '';
    var arr = [];
    var iNow = 0;
    var tmp = '';

    if (iNum != 0) {
        prev = str.substring(0,iNum);
        arr.push(prev);
    }
    str = str.substring(iNum);
    for (var i = 0; i < str.length; i++) {
        iNow ++;
        tmp += str[i];

        if (iNow == 3 && tmp) {
            arr.push(tmp);
            tmp = '';
            iNow = 0;
        }
    }
    return arr.join(',');
}

alert(test(str));

2、

var str = '93456387487';
function test(str) {
    var reg = /(?=(?!\b)(\d{3})+$)/g;
    return str.replace(reg,',');
}

alert(test(str));

斐波那契数列 1 1 2 3 5 8 13 21

1、

function test(n) {
    var num1 = 1;
    var num2 = 1;
    var num3 = 0;
    for (var i = 0; i < (n-2); i++) {
      num3 = num1+ num2;
      num1 = num2;
      num2 = num3;
    }
    return num3;
}
alert(test(8));

2、

function test(n) {
    if (n <=2) {
        return 1;
    }
    return test(n-1) + test(n-2)
}
alert(test(8));

数组排序

1、

function test(arr) {
    for (var i = 0; i < arr.length; i++) {
        for (var j = 0; j < arr.length -i; j++) {
            toCon(j, j+1);
        }
    }

    function toCon(prev,next) {
        var tmp = '';
        if (arr[prev] > arr[next]) {
            tmp = arr[prev];
            arr[prev] = arr[next];
            arr[next] = tmp;
        }
    }
    return arr;
}
var arr = [4,5,1,7,2];
alert(test(arr));

2、

function test(arr) {
    if (arr.length == 1) {
        return arr;
    }
    var iMin = arr[0];
    var iIndex = 0;
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] < iMin) {
            iMin = arr[i];
            iIndex = i;
        }
        
    }
    var prev = arr.splice(iIndex,1);
    return prev.concat(test(arr));
}
var arr = [4,5,1,7,2];
alert(test(arr)); 

数组去重

function test(arr) {
    var result = [];
    var obj = {};
    for (var i = 1; i < arr.length; i++) {
        if (!obj[arr[i]]) {
            result.push(arr[i]);
            obj[arr[i]] =1;
        }
    }
    return result;
}
var arr = [4,5,1,7,2,4,1];
alert(test(arr));

猜你喜欢

转载自blog.csdn.net/qq_33699819/article/details/89034403
今日推荐