10月11号58同城面试的编程题

有三道编程题,前面好像是12道选择,和8道不定选,之后是三道笔试,后面的编程也不难,但是建议一定要提前熟悉赛码或者是牛客的编程接口,要不然主题程序会写但是不会写接口,那就太心塞了。

第一道编程题:

找出字符串中出现最多的字母并打印出来:

假如输入str='aaabbbbbbbc';

输出的是b

答案:

// 58第一题
        var str = 'aaaabbbbbcc';
        var o = {};
        var zm = 0;
        for (var i = 0; i < str.length; i++) {
            zm = str[i];
            if (!o[zm]) {
                //第一次放进去
                o[zm] = 1;
            } else {
                o[zm]++;
            }
        }
        var max_key = 0;
        var max_num = 0;
        for (key in o) {
            if (max_num < o[key]) {
                max_num = o[key];
                max_key = key;
            }
        }
        console.log(max_key);

第二道编程:

最大公共字符前缀:

输入:strs = "flower,flow,flight"

输出:fl

答案:

 //   58 第二题
        // var str = readline();
        var strs = "flower,flow,flight"
        var arr = strs.split(',');
        var longPrefix = function(strs) {
            var dfs = (a, j) => {
                for (var i = 0, res = []; i < a.length; i++) {
                    if (a[i] === strs[j][i]) {
                        res.push(a[i])
                    } else {
                        break;
                    }
                }
                return res.length && strs[++j] !== undefined ? dfs(res, j) : res.join('')
            }
            return strs.length === 1 ? strs[0] : dfs(strs[0] && strs[0].split('') || [], 1)
        }
        console.log(longPrefix(arr));

第三道编程题是数字相消,就是58,85还有就是5588,这种可以消除,类似于消消乐吧

忘记具体的题目是什么了,我当时也没推出规律来,后来交卷以后同学说,推出的规律好像是

f(n)=3f(n-1)-1

找到规律,这就使用递归实现就可以了。

 // 58第三题
        var num = read_line();

        function jumpFloor(number) {
            if (number == 1) {
                return 1
            }
            if (number == 2) {
                return 2
            } else {
                return jumpFloor(number - 1) * 3 - 1;
            }
        }
        Console.log(jumpFloor(num));

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值