首页 > 记一次富途前端笔试
头像
hanfei1234
编辑于 2021-04-06 10:07
+ 关注

记一次富途前端笔试

数组排列拼接使最后结果最大,返回值要求string类型
var largestNum = function(nums) {
    return nums.sort((a,b) =>
        `${b}${a}` - `${a}${b}`
    ).join('').replace(/^0+/,'0')
};
第二题:给定两个32位整数,不使用算术运算符,实现a和b的加减乘除,如果给定的a和b执行加减乘除的某些结果本来就会导致数据的溢出,你实现的函数不需要对那些结果负责
(输出结果与加减乘除溢出结果一致就行)
function calc( a ,  op ,  b ) {
    var result = 0
    
    var cheng = function(a,b){
        var res = 0;
        while(b != 0){
            if((b&1) != 0){
                res = add(res,a)
            }
            a <<= 1
            b >>>= 1
        }
        return res
    }
    var add = function(a,b){
        var r = a;
        while(b){
            r = a ^ b
            b = (a & b) << 1
            a = r
        }
        return r
    }
    var jian = function(a,b){
        b = add(~b,1)
        return add(a,b)
    }
    var chu = function(a,b){
        var x = a < 0 ? add(~a,1):a
        var y = b < 0 ? add(~b,1):b
        var res = 0
        for(let i = 31 ; i > -1; i = jian(i,1)){
            if((x >> i) >= y){
                res |= (1 << i)
                x = jian(x,y << i)
            }
        }
        return (a < 0)^(b < 0) ? add(~res,1):res
    }
    if(op == '*'){
        result = cheng(a,b)
    }else if(op == '+'){
        result = add(a,b)
    }else if(op == '-'){
        result = jian(a,b)
    }else {
        result = chu(a,b)
    }
    return result;
}
测试可用,两道题均已通过


全部评论

(1) 回帖
加载中...
话题 回帖

推荐话题

  • 9443次浏览 10人参与

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐