4.16 360笔试编程题 12+4行代码搞定
第一次做这么简单的编程题,我这个菜比不到20分钟就写完了😂
第一题:
给定一个子串,求所有子串中最多的子串的个数。
例如aba的子串为a,b,a,ab,ba,aba,最多子串为a,输出2。
注意题目描述,aba的子串为a,b,a,ab,ba,aba,而不包括aa,说明题目所说的“子串”描述的是连续子串。
由于若连续子串出现n次,则其所有字符也至少出现n次,因此直接用map统计单个字符的数量。
![](https://uploadfiles.nowcoder.com/message_images/20220416/45398937_1650104986215/discuss_1650104987023.jpeg)
注意此算法只能针对连续子串,若是不连续子串不能用此算法。例如aaabbb,a和b只出现了3次,而ab出现了3x3=9次。
第2题仓库偷东西:
仓库本来有LxRxH个物品,被偷成(L-2)x(R-1)x(H-2),已知剩下物品数量,求可能丢失的物品的最大值。
题目等价于:已知abc的乘积,求(a+2)(b+1)(c+2)-abc的最大值。
由于abc给定,要使(a+2)(b+1)(c+2)最大,即所翻倍数最多。显然abc中原来的值越小,加上1或者2后翻倍就会越多。由于是正整数,即值为1时翻倍最多。
而为了使abc乘积不为1,保留一个数b不为1,令a和c为1,此时所翻倍数是最大的。
因此,令a和c为1,直接计算输出就行了。主函数4行代码搞定:
![](https://uploadfiles.nowcoder.com/message_images/20220416/45398937_1650105633956/discuss_1650105634747.jpeg)
#笔试题目##360公司#
第一题:
给定一个子串,求所有子串中最多的子串的个数。
例如aba的子串为a,b,a,ab,ba,aba,最多子串为a,输出2。
注意题目描述,aba的子串为a,b,a,ab,ba,aba,而不包括aa,说明题目所说的“子串”描述的是连续子串。
由于若连续子串出现n次,则其所有字符也至少出现n次,因此直接用map统计单个字符的数量。
![](https://uploadfiles.nowcoder.com/message_images/20220416/45398937_1650104986215/discuss_1650104987023.jpeg)
注意此算法只能针对连续子串,若是不连续子串不能用此算法。例如aaabbb,a和b只出现了3次,而ab出现了3x3=9次。
第2题仓库偷东西:
仓库本来有LxRxH个物品,被偷成(L-2)x(R-1)x(H-2),已知剩下物品数量,求可能丢失的物品的最大值。
题目等价于:已知abc的乘积,求(a+2)(b+1)(c+2)-abc的最大值。
由于abc给定,要使(a+2)(b+1)(c+2)最大,即所翻倍数最多。显然abc中原来的值越小,加上1或者2后翻倍就会越多。由于是正整数,即值为1时翻倍最多。
而为了使abc乘积不为1,保留一个数b不为1,令a和c为1,此时所翻倍数是最大的。
因此,令a和c为1,直接计算输出就行了。主函数4行代码搞定:
![](https://uploadfiles.nowcoder.com/message_images/20220416/45398937_1650105633956/discuss_1650105634747.jpeg)
#笔试题目##360公司#