牛客网华为试题答案JS

377 阅读1分钟

1. 计算某字母出现次数

const str = 'hello nowcoder';

const l = str.split(' ').reverse().shift().length;

console.log(l)

2. 计算某字母出现次数

function times(str, match) {
    var reg = new RegExp(match, 'gi');
    return str.match(reg).length;
}

console.log(times('ABCabc0', 'A'))

3. 明明的随机数

function rand(num) {
    const arr = [];
    
    for (let i = 0; i < num; i++ ) {
        arr.push(Math.floor(Math.random() * 1000) + 1)
    }

    const norepeat = [...new Set(arr)]
    
    return norepeat.sort(function(a,b) {
        return a - b;
    })
}

console.log(rand(3))
console.log(rand(11))

4. 字符串分隔

function sp(input) {
    const strNoBlank = input.split(' ').join('');
    const l = strNoBlank.length;
    const times = Math.ceil(l / 8);
    const isInt = l % 8 === 0;
    const arr = [];
    
    for (let i = 0; i < times; i++) {
        arr.push(strNoBlank.slice(i * 8, (i + 1) * 8));
    }
    
    if (!isInt) {
        let last = arr[arr.length - 1];
        const zero = 8 - last.length;
        let zeroStr = '';
        
        for (let i = 0; i < zero; i++) {
            zeroStr += '0';
        }
        
        last += zeroStr;
        arr[arr.length - 1] = last;
    }
    
    return arr;
}

console.log(sp('abc')) // abc00000
console.log(sp('123456789')) // 12345678,90000000

5. 进制转换

function convert(str) {
    return parseInt(str, 16); // 十六进制转十进制
}

console.log(convert('0xA')) // 10
console.log(convert('0xAA')) // 170

6. 质数因子

function commit(num) {
    let a = '';
    for (let i = 2; i <= num; i++) {
        if (num % i === 0) {
            num = num / i;
            a = a + '' + i + ' ';
            i = 1;
        }
    }
    return a;
}

console.log(commit(180));

7. 取近似值

function near(num) {
    return Math.round(num)
}

console.log(near(5.5))

8. 合并表记录

10. 字符个数统计

function count(str) {
    return [...new Set(str)].length;
}

console.log(count('abc'))

15. 求int型正整数在内存中存储时1的个数

function convert(num) {
    return num.toString(2);
}

console.log(convert(5).split('0').length)