【排序】圖書管理員

題目鏈接:https://ac.nowcoder.com/acm/problem/16422

題目描述

圖書館中每本書都有一個圖書編碼,可以用於快速檢索圖書,這個圖書編碼是一個正整數。 每位借書的讀者手中有一個需求碼,這個需求碼也是一個正整數。如果一本書的圖書編碼恰好以讀者的需求碼結尾,那麼這本書就是這位讀者所需要的。小 D 剛剛當上圖書館的管理員,她知道圖書館裏所有書的圖書編碼,她請你幫她寫一個程序,對於每一位讀者,求出他所需要的書中圖書編碼最小的那本書,如果沒有他需要的書,請輸出-1。

輸入描述

輸入的第一行,包含兩個正整數 n 和 q,以一個空格分開,分別代表圖書館裏書的數量和讀者的數量。
接下來的 n 行,每行包含一個正整數,代表圖書館裏某本書的圖書編碼。
接下來的 q 行,每行包含兩個正整數,以一個空格分開,第一個正整數代表圖書館裏讀者的需求碼的長度,第二個正整數代表讀者的需求碼。

輸出描述

輸出有 q 行,每行包含一個整數,如果存在第 i 個讀者所需要的書,則在第 i 行輸出第 i 個讀者所需要的書中圖書編碼最小的那本書的圖書編碼,否則輸出-1。

示例

輸入

5 5
2123
1123
23
24
24
2 23
3 123
3 124
2 12
2 12

輸出

1123
-1
-1
-1

說明

第一位讀者需要的書有 2123、1123、23,其中 23 是最小的圖書編碼。
第二位讀者需要的書有 2123、1123,其中 1123 是最小的圖書編碼。
對於第三位,第四位和第五位讀者,沒有書的圖書編碼以他們的需求碼結尾,即沒有他們需要的書,輸出-1。

備註

對於 20%的數據,1 ≤ n ≤ 2。 另有 20%的數據,q= 1。
另有 20%的數據,所有讀者的需求碼的長度均爲1。
另有 20%的數據,所有的圖書編碼按從小到大的順序給出。
對於 100%的數據,1≤n ≤1,000,1 ≤ q ≤ 1,000,所有的圖書編碼和需求碼均不超過 10,000,000

解題思路

保存好所有數據後,先對book的編碼進行排序(從小到大),然後轉爲字符串,兩重循環遍歷,對於每個reader,對於每一本book,是否滿足book的編碼的最後【reader編碼位長度】與reader的編碼匹配,匹配則跳出循環輸出結果,否則輸出-1,這樣看來,使用python比較方便一點。

代碼

n, q = list(input().split())

book_code = []
for i in range(int(n)):
    temp = input()  # int是爲了方便使用sort函數
    book_code.append(int(temp))
book_code.sort()
book_code = [str(i) for i in book_code]  # 字符化,主要是爲了比較

reader_code = []
reader_code_len = []
for i in range(int(q)):
    temp1, temp2 = input().split()
    reader_code_len.append(temp1)
    reader_code.append(temp2)

for i in reader_code:  # 對於每個讀者
    res = -1
    for j in book_code:  # 對於每本書
        if i == j[0 - len(i):]:
            res = j
            break
    print(res)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章