腾讯 9.16 前端开发岗笔试题

啥也不说了,和头条比起来,TX的编程题简直...好简单,感觉都不能叫算法题

js 直接撸,,,没啥算法,就数学思路,一路往下就行...完全不用考虑什么复杂度

代码很粗糙,因为想到哪儿写到哪儿,也没做优化,凑合着看一看吧 - -
// 第一题 ---------------------------

        var n = parseInt(readline());

        var ans = 0;

        for(var i = 0;i  n; i++){

            var num = readline(); // 读取的数字

            var numArr = num.toString().split(''); // 变成数组

            numArr.forEach(function(ele, index) {

                numArr[index] = parseInt(ele);

            }); // 变成数字

            var total = numArr.reduce(function(total, pre) {

                return total + pre;

            }, 0); // 求和

            if (parseInt(num) % total === 0) {

                console.log('Yes');

            } else {

                console.log('No');

            }

        }

        // 第二题 --------------------------

        var n = parseInt(readline());

        var ans = 0;

        var res = 1;

        var arr = readline().split('  ');

        var str = arr.join('');

        str = str.replace(/\b0+/,'');

        str = str.replace(/0+\b/,''); // 去掉前后的0

        if (str.length  1) {

            console.log(1); // 只有一个坚果,那就不掰

        } else {

            var temp = str.split('1'); 

            temp.forEach(function(ele) {

                var len = ele.length;

                if (len !== 0 ) {

                    res *= (len +1)

                }

            });

            console.log(res);

        }

        // 第三题 ---------------------------

        var str = readline(); // 源

        var target = readline(); // 目标

        var tarlen = target.length; // 目标子串的长度

        var arr = [];

        var index = str.indexOf(target, 0);

        while(index != -1) {

            arr.push([index, index + tarlen]); // 把集合区间push进去

            index = str.indexOf(target, index + 1);

        }

        var res = 0;

        for (var i = 0; i  arr.length - 1; i++) {
            
            if (arr[i][1] >= arr[i+1][0]) {

                arr[i + 1][0] = arr[i][0];

                arr[i][0] = arr[i][1] = 0;

            }

        }

        for (var i = 0; i  arr.length; i++) {

            res += (arr[i][1] - arr[i][0]) * (arr[i][1] - arr[i][0]);

        }

        console.log(res);        

#腾讯##前端#
全部评论
头条AC0.5的我在腾讯的笔试题找回了自信。
点赞 回复 分享
发布于 2018-09-16 16:34
// 第二题 let str = readline().replace(/\s/g, ''); str = str.replace(/^0*|0*$/g, ''); const manny = str.match(/10+/g) && str.match(/10+/g).map(item => item.length).reduce((red, item) => red * item, 1) || 1; console.log(many); // 第三题没什么思路,感觉也可以用正则
点赞 回复 分享
发布于 2018-09-16 16:46
666
点赞 回复 分享
发布于 2018-09-16 16:32
前排膜拜大佬,能说说第二第三题的思路吗?
点赞 回复 分享
发布于 2018-09-16 16:34
居然思路都是差不多的。。。。。
点赞 回复 分享
发布于 2018-09-16 16:35
那个readline函数只有在node的环境下才能用吗,我都没见过···,完蛋了
点赞 回复 分享
发布于 2018-09-16 16:42
第三题把 求和 看成了 求最大值 好气啊!!!!
点赞 回复 分享
发布于 2018-09-16 16:48
虽然不是算法题,规律找不到一样不会😭
点赞 回复 分享
发布于 2018-09-16 16:51

相关推荐

点赞 27 评论
分享
牛客网
牛客企业服务