真实华为机考题分享

这是本人真实经历过的华为的机考题,一共两道,要求90分钟内答完。其中第一道没问题,100%通过率,第二道是80%通过率,找了大半个多小时,也没找出问题所在来,无奈放弃。大家可以帮忙看下问题在哪,可以直接在文章下方直接评论。

1.字符串操作

题目描述:给定两个字符串a b,注意:其中a字符串中有空格。求b字符串在a字符串中出现的次数。例:

输入:a="abc cc d",b="cc"。

输出:b在a中出现次数为:2次
 

这个题很简单,把a中空格去掉,然后再拿b中字符到a中一一进行比对。中间可使用一变量flag,如果出现不一致情况,flag就置为False。如果全程一致,即判断结束后flag依然为True,那么就记+1,继续判断。

注意特殊情况的处理:比如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

 

 

2.舞会来宾统计

题目描述:这个原题目描述很长啊,我这里简单概括一下。就是主办方要在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: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
 
我的想法是:先用一个列表将这些输入存起来,然后再构建一个列表用来存储结果,最后格式化输出一下子。

我写的代码如下,大家可以帮我挑挑毛病:

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

 
 

你可能感兴趣的:(华为,面试,python,算法)