華為2019春招筆試題

大寫的ZDQ發表於2019-04-10

1.有多組整數陣列,需要將他們合併成一個新的陣列,合併規則,從每個陣列裡按順序取出固定長度或者已經為空,則直接取出剩餘部分的內容放到新的陣列中,繼續下一行。

第一行是讀取固定長度,長度>0

第2-n行是需要合併的資料,不同的陣列用回車換行分隔,陣列內部用逗號分隔。

eg:
3
2,5,6,7,9,5,7
1,7,4,3,4

輸出:2,5,6,1,7,4,7,9,5,3,4,7

思路:按照順序讀取指定個數。注意這裡需要用readline()來讀取系統的測試用例。

import sys
if __name__ == "__main__":
    n = int(sys.stdin.readline().strip())	#讀取一行我們要迴圈取的數字個數
    data = []		# 開闢存放數字的列表
    while True:
        line = sys.stdin.readline().strip()	# 讀取後面寫入的陣列數字
        if not line:
            break
        tmp = list(map(str, line.split(',')))	# 這裡是把輸入的陣列數字變成字串,並用逗號分隔開來
        data.append(tmp)	#把分隔開的字串數字存放在data列表當中,這裡就有維巢狀列表。

    li = [[] for _ in range(len(data))]	# 新建立一個巢狀列表,有data維數個
    m = len(data)	# data的維數
    max_len = 0
    for i in range(len(data)):	# 開始遍歷data列表中的子列表
        if len(data[i]) > max_len:	# 如果子列表長度大於max_len
            max_len = len(data[i])	# 就把子列表長度賦值給max_len
        for j in range(0, len(data[i]), n):	# j的遍歷方式是跨度為輸入的n
            li[i].append(data[i][j: j + n])	# 把子列表中的數字按照n的規律依次放入li列表中
    res = []	# 定義res輸出
    for i in range(max_len):	# 遍歷每一維列表的長度
        for j in range(len(data)):	
            if len(li[j]) > i:			# 最後得到res結果輸出
                res += li[j][i]

    print(','.join(res))

2.對輸入字串檢查是否存在非法字元,輸出合法字串(去重),和非法字串(不去重)
對合法字串迴圈左移10次,再進行排序輸出。

(1)字串中的字符集和‘0’-‘9’,‘a’-‘z’,‘A’-‘Z’,其餘為非法字元
(2)作為輸入的字串個數不超過100,每個字串長度不超過64
(3)作為輸入的連續空字串(空格/製表符/回車/換行符)作為一個空格處理
(4)輸入每行只有一個字串
(5)輸入以空格結束

輸出:
(1)輸出合法字串並去重
(2)輸出所有非法字串
(3)對結果1的去重合法字串迴圈左移10次
(4)對結果3合法字串排序,按ASCII表字元從小到大順序排序

每輸出一個字元後用空格跟下一個字串隔離,作為輸出的所有字串之間只能有一個空格

思路:使用正規表示式來匹配合法,非法字元。

import re

all_strings = list()
valid_strings = list()
invalid_strings = list()

while True:
    try:
        s = input().strip()
        if re.match('[0-9a-zA-Z]+$', s):
            if s not in valid_strings:
                valid_strings.append(s)
        else:
            invalid_strings.append(s)
    except EOFError:
        break

new_valid_strings = list()
for s in valid_strings:
    shift = 10 % len(s)
    new_s = s[shift:] + s[:shift]
    new_valid_strings.append(new_s)

print(' '.join(valid_strings))
print(' '.join(invalid_strings))
print(' '.join(new_valid_strings))
print(' '.join(sorted(new_valid_strings)))

相關文章