华为2019年4月3号笔试题

1、合并数组

简单来说就是:给多个数组,然后截取固定长度,放入新数组,在截取第二个数组放入新数组,全部遍历完以候,循环遍历这些个数组,直到每个数组的末尾

输入:
3#固定长度
1 3 5 67 6 5
5 7
输出1,3,5,5,7,67,6,5
输入:
2
2 3 5 6 3 9
3 5 7 8 9
输出:
2,3,3,5,5,6,7,8,3,9,9

例1固定长度为3,先遍历第一行,获得1,3,5第二行,5,7,在遍历第一行67,6,5

笔者在这yharm测试了,但是我没发现自己选的是py2,我用的是py3,一直报错,后来人告诉我有自测可以看错误,然后第一题在本机上可以,还是没通过,以下是答案不知道对错

import sys
#
if __name__ == "__main__":
    n = int(sys.stdin.readline().strip())  # 每次读几个
    result = []
    line = sys.stdin.readline().strip()
    a=[]
    while line:
    # 把每一行的数字分隔后转化成int列表
        values = list(map(int, line.split()))
        a.append(values)
        # length=len(values)
        line = sys.stdin.readline().strip()
    L=len(a)
    while a!=[[]]*L:
        # print(1)
        for i in range(L):
            length=len(a[i])
            if length >= n:
                for j in range(n):
                    result.append(a[i][j])
                a[i] = a[i][n:]
            elif length < n and length > 0:
                for j in range(len(a[i])):
                    result.append(a[i][j])
                a[i] = []
            elif length==0:
                continue
    # print(result)
    for i in range(len(result)):
        if i==len(result)-1:
            print(result[i])
        else:
            print(result[i],end=",")

2,题目超级长(多行输入,最多不超过100行)

对输入的字符串要看是否是合法的(合法字符集0-9,a-z,A-Z),合法就进行去重(就是后续的输入中有没有和这合法字符串长得一样的),不合法不去重,
输出要求:输出合法字符并去重、输出非法字符串(我想应该是按照输入的顺序来的),对合法的字符串进行循环左移10次(abc变为bca),左移后对合法字符按照ascii表从小到大排序,输出两个字符串之间用空格隔开
然后这题写不上来

3.

你可能感兴趣的:(python语言)