2018-3美团编程题

编程题1:给定一个序列,输出这个序列子串的和为K的倍数的子串的长度,如果有重复,输出最大长度。
例如:序列为:{1,2,3,4,5} k = 5
那么子串的和为5的倍数的有{2,3},{1,2,3,4},{1,2,3,4,5},{5} ,而这时长度最大的是5,所以输出5。

        int count = 0;  
        for (int i = 0; i < n; i++) {  
            int tmp = 0;  
            for (int j = i; j < n; j++) {  
                tmp += a[j];  
                if (tmp%k == 0)   
                    count = count > (j - i + 1) ? count : (j - i + 1);  

            }  
            if (count >= n - i)  
                break;  
        }  
        cout << count << endl;  
        return 0;  

第二题:
在十进制表示中,任意一个正整数都可以用字符‘0’-‘9’表示出来。但是当‘0’-‘9’这些字符每种字符的数量有限时,可能有些正整数就无法表示出来了。比如你有两个‘1’,一个‘2’ ,那么你能表示出 11,12,121 等等,但是无法表示出 10,122,200 等数。

现在你手上拥有一些字符,它们都是‘0’-‘9’的字符。你可以选出其中一些字符然后将它们组合成一个数字,那么你所无法组成的最小的正整数是多少。
解析:
情况一:0-9中有没有出现的字符,且该字符不是0,则无法组成的最小数为缺席的字符(有多个字符缺席则选择值最小的字符),如该字符是0,则无法组成的最小数为10。
情况二:0-9所有字符都出现过,记录每个字符出现次数,找到出现次数最小的那个字符X,次数为c(如果有多个字符出现次数都最小,选择值最小的那个。
  1.如果那个字符不是’0’,答案就是c+1个a。比如是’2’,出现了3次,无法组成的最小正数就是2222。
  2.如果那个字符是’0’,答案就是1接c+1个。比如是’0’,出现了3次,无法组成的最小正数就是10000。

第三题:
给出两个相同长度的由字符 a 和 b 构成的字符串,定义它们的距离为对应位置不同的字符的数量。如串”aab”与串”aba”的距离为 2;串”ba”与串”aa”的距离为 1;串”baa”和串”baa”的距离为 0。下面给出两个字符串 S 与 T,其中 S 的长度不小于 T 的长度。我们用|S|代表 S 的长度,|T|代表 T 的长度,那么在 S 中一共有|S|-|T|+1 个与T长度相同的子串,现在你需要计算 T 串与这些|S|-|T|+1 个子串的距离的和。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值