华为笔试题

2018华为笔试题

题1

  • 题目描述

    在无限通信接收,接受到的信号一般会有RAKE多径。
    现给出RAKE接收机21径能量;多径索引为0~20;
    用一个4径的接受窗在21径上进行滑动,滑动窗判断什么位置接收最大能量。接收窗索引以窗内第一径为准。
    比如窗最大能量框住径为0,1,2,3;则窗索引为0;
    如果两个窗的能量一样,则以索引最小为输出。
    要求输出:最大接收能量窗的索引

  • 输入描述

21径能量,每一径能量范围为[0,65536]
  • 输出描述
虽大接收能量窗的索引
  • 示例
输入

0
1
2
3
'''
18
19
20

输出

17
  • 我的解题
if __name__ == '__main__':
    try:

        data = []
        for i in range(21):
            list_new = int(raw_input())
            data.append(list_new)

        l = len(data)-3
        num_list = [0 for i in range(0,l)]
        for i in range(0,l):
            num_list[i] = data[i] + data[i+1] + data[i+2] + data[i+3]


        index = num_list.index(max(num_list))

        print index
    except:
        pass

题2

  • 题目描述

自然键盘的按键顺序是字母顺序;我吗通常使用的是标准键盘,字母排布顺序是打乱的。
即标准键盘的“QWERTYUIOPASDFGHJKLZXCVBNM”键分别对
应自然键盘的“ABCDEFGHIJKLMNOPQRSTUVWXYZ”键。
一个可以在标准键盘上盲打的小学生,并没有注意到自己使用的是自然键盘,他在自然键盘上按照标准键盘的经验,盲打了”I am a boy”,实际打出了”H kz k xif”。
题目要求编程实现,把自然键盘上产生的类似”H kz k xif”这样的字符串,转换为在标准键盘的”I am a boy”。
本题中,输入字符串长度小于1000字节,且不包含汉子等多字节字符。

  • 输入描述
一个字符串,表示按照标准键盘输入动作,在自然键盘上打字产生的字符串
  • 输出描述
打字的人在标准键盘上要打印的实际内容
  • 示例
输入

H kz k xif.

输出

I am a boy.
  • 我的解题
if __name__ == '__main__':
    try:
        data = raw_input()
        str1 = list('QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm')
        str2 = list('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz')

        res_list = []

        for s1 in data:
            if s1 in str2:
                i = str2.index(s1)
                res_list.append(str1[i])
            else:
                res_list.append(s1)

        res = "".join(res_list)

        print res



    except:
        pass

题3

  • 题目描述

输入时一个整型数组,数组里的整型数可以是证书,也可以是负数。子数组指的是数组中连续的一个或多个元素的集合,求这些子数组中,求和后最大值是多少。

  • 输入描述
一个整型数组
  • 输出描述
最大连续字数组的和
  • 示例
输入

2,-3,4,11,-5,8,3,-6

输出

21
  • 我的解题
if __name__ == '__main__':
    try:
        data_input = raw_input().split(',')
        str_data = list(data_input)
        data = []
        for i in str_data:
            data_a = int(i)
            data.append(data_a)

        data.reverse()
        num_list = data

        data_len = len(data)


        for i in range(1,data_len):
            if data[i] < data[i]+ num_list[i-1]:
                num_list[i] = num_list[i-1] + data[i]

        num = max(num_list)
        print num


    except:
        pass

题目来源于华为2018笔试题,侵删

以上为本人解法,欢迎大佬指点><

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值