这是本人真实经历过的华为的机考题,一共两道,要求90分钟内答完。其中第一道没问题,100%经过率,第二道是80%经过率,找了大半个多小时,也没找出问题所在来,无奈放弃。你们能够帮忙看下问题在哪,能够直接在文章下方直接评论。
题目描述:给定两个字符串a b,注意:其中a字符串中有空格。求b字符串在a字符串中出现的次数。例:python
输入:a="abc cc d",b="cc"。数组
输出:b在a中出现次数为:2次
code
这个题很简单,把a中空格去掉,而后再拿b中字符到a中一一进行比对。中间可以使用一变量flag,若是出现不一致状况,flag就置为False。若是全程一致,即判断结束后flag依然为True,那么就记+1,继续判断。orm
注意特殊状况的处理:好比b字符串比a字符串要长的状况,还有b字符串比a字符串剩余要比对的字符串长的状况。我当时写的代码以下:字符串
# 外层套一个while,目的是为了适应多组输入 while True: try: a = input().split() b = input() a = "".join(a) res = 0 la = len(a) lb = len(b) # 若是输入的b字符串比a字符串还长,就直接break if lb > la: break # 注意b字符串的末尾对齐a字符串的末尾 for i in range(la-lb+1): flag = True # 逐个判断,若是中途遇到不相等的状况,就跳出内层循环 for j in range(lb): if a[i+j] != b[j]: flag = False break if flag: res += 1 print(res) except Exception as e: break
题目描述:这个原题目描述很长啊,我这里简单归纳一下。就是主办方要在12:00-20:00之间要举办舞会,要求在门口处统计来宾的到达时间与预计离开时间,由于舞会最大只能容纳100人(注意这里,我代码只经过80%样例可能就是由于这里100人没处理好)。好比统计格式为:12:00-14:00,意思是这我的是12:00-13:00之间来的,预计13:00-14:00之间会离开。看样例(遇到-1时结束输入):input
输入: (13,15)
(13,14)
(14,16)
(14,20)
-1it
输出: 12:00-13:00 0
13:00-14:00 2
14:00-15:00 3
15:00-16:00 2
16:00-17:00 1
17:00-18:00 1
18:00-19:00 1
19:00-20:00 1
个人想法是:先用一个列表将这些输入存起来,而后再构建一个列表用来存储结果,最后格式化输出一会儿。io
我写的代码以下,你们能够帮我挑挑毛病:form
while True: try: # 构建一个结果数组 res = [0 for i in range(8)] while True: num = input() if num == "-1": break num1,num2 = num.split(",") low = int(num1)-12 high = int(num2)-12 # 这里写得很差,总感受不对。 if max(res) == 100: break for i in range(low, high): res[i] += 1 x = len(res) # 格式化输出 for j in range(x): print("{0}:00-{1}:00 {2}".format(j+12,j+13, res[j])) except Exception as e: print(e) break