当前位置: 首页 > 后端技术 > Python

华为机考真题分享

时间:2023-03-26 10:51:53 Python

这些是我实际体验过的华为机考真题。一共两题,必须在90分钟内作答。其中,第一个还可以,通过率100%,第二个通过率80%。找了半个多小时也没找到问题所在,就放弃了。大家可以帮忙看看问题出在哪里,也可以直接在文章底部评论。1、字符串操作题目描述:给定两个字符串ab,注意:字符串a中有空格。求字符串b在字符串a中出现的次数。示例:输入:a="abcccd",b="cc"。输出:a中b出现的次数为:2这道题很简单,去掉a中的空格,然后将b中的字符与a一一比较。中间可以使用可变标志。如果存在不一致,则该标志将设置为False。如果整个过程一致,即判断结束后flag还是True,则记录+1,继续判断。注意特殊情况的处理:比如b串比a串长的情况,b串比其余要和a串比较的串长的情况。我当时写的代码如下:#外层覆盖while,目的是适应多组输入whileTrue:try:a=input().split()b=input()a="".join(a)res=0la=len(a)lb=len(b)#如果输入的b字符串比a字符串长,直接breakiflb>la:break#注意结尾b字符串的尾部与a字符串的尾部对齐foriinrange(la-lb+1):flag=True#一个一个判断,如果中间出现不相等的情况,则跳出内循环forjinrange(lb):ifa[i+j]!=b[j]:flag=Falsebreakifflag:res+=1print(res)exceptExceptionase:break2.舞会嘉宾统计标题描述:这个原标题描述很长,这里简单总结一下。即主办方想在12:00-20:00之间举办舞会,需要统计门口客人的到达时间和预计离开时间,因为舞会最多只能容纳100人(这里注意,我的代码只通过了80%的样本,可能是因为这里的100个人没有处理好)。例如,统计格式为:12:00-14:00,表示此人在12:00-13:00之间来,预计在13:00-14:00之间离开。看例子(遇到-1就结束输入):输入:(13,15)(13,14)(14,16)(14,20)-1输出:12:00-13:00013:00-14:00214:00-15:00315:00-16:00216:00-17:00117:00-18:00:001我的思路是:先用一个list来存储这些输入,然后构建一个列表来存储结果,最后一次格式化输出。我写的代码如下,大家帮我找找看:whileTrue:try:#Buildaresultarrayres=[0foriinrange(8)]whileTrue:num=input()ifnum=="-1":breaknum1,num2=num.split(",")low=int(num1)-12high=int(num2)-12#这个写得不好,总感觉不对。ifmax(res)==100:breakforiinrange(low,high):res[i]+=1x=len(res)#formatoutputforjinrange(x):print("{0}:00-{1}:00{2}".format(j+12,j+13,res[j]))除了Exceptionase:print(e)break