2019演算法崗阿里筆試程式設計題
程式設計題一共兩道,博主是個菜雞,有幸被阿里虐了一遍,筆試結束後整理了一下題目和自己的答案,希望對各位有個參考,放正文前,先放一張圖,今年阿里和商湯的筆試時間有衝突,網上對於阿里和商湯的筆試評價如下圖:
阿里的程式設計題真的好接地氣,感覺就是把專案中的一個小小的部分拿來了吧,完全打個措手不及;
開始正文
阿里:程式設計題1
請使用標準輸出(sys.stdout);已禁用圖形、檔案、網路、系統相關的操作,如Process , httplib , os;縮排可以使用tab、4個空格或2個空格,但是隻能任選其中一種,不能多種混用;如果使用sys.stdin.readline,因為預設會帶換行符,所以要strip(’ ‘)進行擷取;建議使用raw_input()
時間限制: 3S (C/C++以外的語言為: 5 S) 記憶體限制: 128M (C/C++以外的語言為: 640 M)
輸入:
輸入資料包含兩行,
第一行,實體列表,多種實體之間用分號隔開,實體名和實體值之間用下劃線隔開,多個實體值之間用豎線隔開,所有標點都是英文狀態下的,格式如下:
實體名稱1_實體值1|實體值2|…;實體名稱2_實體值1|實體值2|…;…
第二行,使用者的自然語言指令
輸出:
被標記了關鍵詞的指令。指令中的關鍵詞前後加一個空格被單獨分出來,並在後面跟上”/”+實體名稱來標記。如果一個實體值屬於多個實體,將這些實體都標記出來,並按照實體名稱的字串順序正序排列,並以逗號分隔。
輸入範例:
singer_周杰|周杰倫|劉德華|王力巨集;song_冰雨|北京歡迎你|七里香;actor_周杰倫|孫儷
請播放周杰倫的七里香給我聽
輸出範例:
請播放 周杰倫/actor,singer 的 七里香/song 給我聽
個人答案,說到底就是字串的處理問題,我先將關鍵字部分暴力搜尋提取出來放在一個雜湊表裡,然後根據輸入的情況,不斷從雜湊表裡查詢,輸出結果,這裡放上自己的答案,沒有全部AC,有問題請各位指出:
def Solve(inputs, dicts):
res = ""
i = len(inputs) - 1
while i>=0:
j = i - 1
s = inputs[j:i+1]
while j>=0 and s not in dicts:
j -= 1
s = inputs[j:i+1]
if s in dicts:
res = ' ' + s + '/' + dicts[s] + ' '+ res
i = j-1
else:
res = inputs[i] + res
i -= 1
return res
import sys
if __name__ == '__main__':
ss = input().split(';')
dicts = {}
names = []
for s in ss:
s = s.split('_')
s[1] = s[1].split('|')
for i in range(len(s[1])):
key = s[1][i]
if key not in dicts:
dicts[key] = s[0]
else:
dicts[key] = dicts[key] + ',' + s[0]
names += s[1]
strings = input()
res = Solve(strings, dicts)
sys.stdout.write(res + '\n')
測試結果:
我的Linux沒有中文的,所以我就直接提取了每個字的第一個字母代替這個字做測試;
輸入:
singer_zj|zjl;song_by|qlx;actor_zjl|sl
qbfzjldqlxgwt
輸出情況:
從單個測試結果來看,還是正確的,但是不確定中文情況下行不行,我的結果也沒有全部AC
阿里程式設計第二題
請使用標準輸出(sys.stdout);已禁用圖形、檔案、網路、系統相關的操作,如Process , httplib , os;縮排可以使用tab、4個空格或2個空格,但是隻能任選其中一種,不能多種混用;如果使用sys.stdin.readline,因為預設會帶換行符,所以要strip(’ ‘)進行擷取;建議使用raw_input()
時間限制: 3S (C/C++以外的語言為: 5 S) 記憶體限制: 128M (C/C++以外的語言為: 640 M)
輸入:
輸入資料包含兩行,
第一行,上述格式的語義模板表示式
第二行,使用者的自然語言指令(即:使用者query)
輸出:
當前query是否匹配當前語義模板表示式。匹配,則輸出1,否則輸出0.
輸入範例:
<[播]放|來>[一|幾]<首|曲|個>@{singer}的<歌[曲]|[流行]音樂>
來幾首@{singer}的流行歌曲
輸出範例:
0
這個題沒做出來,好麻煩,事後做了一下,純暴力切割字串,一個個做匹配,程式碼一點也不符合信達雅原則,請輕噴:
def inprocess(strings):
dicts = {'<':'>', '>':'<', '[':']', ']':'[' }
flag = []
i = 0
res = []
start = 0
# split inputs to many strings
while i <len(strings):
s = strings[i]
if s=='<' or s=='[':
flag.append(s)
if strings[start]=='@':
res.append(strings[start:i])
start = i
elif flag and s==dicts[flag[-1]]:
tmp = flag.pop()
if flag:
continue
else:
res.append(strings[start+1:i])
start = i+1
del tmp
i += 1
# process the res
collect = []
for id, lists in enumerate(res):
if '|' not in lists:
collect.append(lists)
continue
lists = lists.split('|')
for s in lists:
i = 0
# while i < len(s):
if s[i]=='[':
collect.append(s[i+1:s.index(']')])
i = s.index(']')+1
if i<len(s):
collect.append(collect[-1]+s[i:])
elif '[' not in s:
collect.append(s)
for c in res:
print(c)
print(collect)
return collect
def testing(qurry, collect):
i = 0
while i<len(qurry):
c = qurry[i]
if c in collect:
collect = collect[collect.index(c)+1:]
elif c=='@':
if qurry[i:qurry.index('}')+2] in collect:
i = qurry.index('}') + 1
else:
return 0
else:
return 0
i += 1
return 1
if __name__ == '__main__':
inputs = "<[B]F|L>[Y|J]<S|Q|G>@{singer}G<[Q]|[LX]YL>"
res = inprocess(inputs)
qurry = "[email protected]{singer}GLXGQ"
print(testing(qurry, res))
我想的是:來幾首@{singer}的流行歌曲測試結果為0可能是流行和歌曲放反了???只能是歌曲,流行,流行音樂???喵喵喵???
測試結果:
相關推薦
2019演算法崗阿里筆試程式設計題
程式設計題一共兩道,博主是個菜雞,有幸被阿里虐了一遍,筆試結束後整理了一下題目和自己的答案,希望對各位有個參考,放正文前,先放一張圖,今年阿里和商湯的筆試時間有衝突,網上對於阿里和商湯的筆試評價如下圖: 阿里的程式設計題真的好接地氣,感覺就是把專案中的一個小小
【2019秋招】攜程資料分析崗筆試程式設計題——畫心形
畫心形 題目描述: 你需要在一個10*10的點陣中,根據制定的兩個頂點,畫出一個符合要求的心形,如下如: 輸入描述: 你會得到兩組引數,代表這心形上端兩個點的座標,(x1,y1),(x2,y2)代表這兩點所在的行列,如上圖,你得到的座標為(2,3),(2,7)
【順豐科技】 2019校招 人工智慧與機器學習工程師線上考試 筆試程式設計題
#!/bin/python # -*- coding: utf8 -*- import sys import os import re #請完成下面這個函式,實現題目要求的功能 #當然,你也可以不按照下面這個模板來作答,完全按照自己的想法來 ^-^ #**
2018年貝殼網校招(秋招)演算法筆試程式設計題
1、題目描述: 給定一個長度為N的序列A1到AN,求所有區間[L,R](1≤L≤R≤N)的極差之和,其中區間[L,R]的極差定義為AL到AR中的最大值與最小值之差。 思路:暴力求解,通過率36% 程式碼如下: # -*- coding:utf-8 -*- cl
2019網易秋招筆試 程式設計題:俄羅斯方塊
題目:俄羅斯方塊 小易有一個古老的遊戲機,上面有著經典的遊戲俄羅斯方塊。因為它比較古老,所以規則和一般的俄羅斯方塊不同。 熒幕上一共有 n 列,每次都會有一個 1 x 1 的方塊隨機落下,在同一列中,後落下的方塊會疊在先前的方塊之上,當一整行方塊都被
360 2019校招筆試 程式設計題-2018.08.27
思路: 題目要求城市是平行於座標軸的正方形,我們只需要求出最大的橫座標差和最大的縱座標軸之差,取較大值作為正方形城市邊長即可 程式碼: #include <iostream>
2019網易秋招筆試 程式設計題:塔
題目 小易有一些立方體,每個立方體的邊長為1,他用這些立方體搭了一些塔。 現在小易定義:這些塔的不穩定值為它們之中最高的塔與最低的塔的高度差。 小易想讓這些塔儘量穩定,所以他進行了如下操作:每次從某座塔上取下一塊立方體,並把它放到另一座塔上。 注
2017校招去哪網,阿里,網易,中興,華為筆試程式設計題五則(Python描述)
前言 學長忙著找工作,今天幾輪筆試,把能拍到的筆試題都給我寫了寫,我想對明年找工作或者實習有所幫助 第一題,去哪網筆試題 題目我個人感覺難度還可以,我自己寫了好久,三道題,一道重複,還有一題同學沒拍到,總共時間給兩個小時,時間給的久,相比有
2018年秋招阿里的筆試程式設計題
題目1: 只需開口說話就能控制計算機做自己想做的事情,這種新奇的人機互動方式已經從科幻小說進入了現實世界。那麼機器是如何理解人說的話呢?這是一個複雜的過程,其中一個重要的任務就是教會機器理解話語中的重點,即關鍵詞。比如對機器人說“請播放周杰倫的青花瓷”
OPPO 2019校園招聘C/C++開發工程師(手機方向) 筆試程式設計題-2018.09.10
思路: 1. 分割字串,提取數字 2. multimap儲存 3. 遍歷找到相應結果輸出 #include <iostream> #include <map> #
順豐科技 2019校園招聘筆試程式設計題-2018.09.15
這道題 63%通過率,沒找到AC程式碼,先記錄一下 堆排序,63%程式碼: #include <bits/stdc++.h> using namespace std;
某公司筆試程式設計題
參加了某公司程式設計題,這些題都來自牛客網,記錄總結吧! 一、蛇形矩陣 題目描述 蛇形矩陣是有1開始的自然數依次排列成的一個上三角矩陣. 介面說明 void GetResult(int Num, int* pResult); 輸入引數: int Num
線上筆試程式設計題
現在給出N個長度都為L的單詞,單詞中僅包含大寫英文字母(A-Z)。你可以從所有單詞的第一個字母中挑一個作為拼詞的第一個字母,第二個字母中挑一個作為拼詞的第二個字母...以此類推。 比如給出N=3個L=4的單詞: CAKE TORN SHOW 你可以(但不僅限於)拼出以下單詞:
2019美團校招一道程式設計題
樣例輸入: 4 20 20 100 60 50 30 80 55 100 60 110 88 5 3 10 6 樣例輸出: 94 分析: 經典01揹包問題參考:https://blog.csdn.net/u011321546/article
科大訊飛-筆試程式設計題-數蚊子
數蚊子 時間限制:C/C++語言 1000MS;其他語言 3000MS記憶體限制:C/C++語言 65536KB;其他語言 589824KB 題目描述: 現在有一個蚊帳,假如用矩形體來表示一個蚊帳,為了方便描述,將該長方體的三個面放在X,Y,Z座標面上。那麼該矩形體的一個頂點就是(0
9.12 迅雷筆試程式設計題
A 題意: 求素勾股個數 思路: 參考. #include <iostream> #include <algorithm> #include <string&g
2018年百度秋季招聘C++開發工程師筆試程式設計題一
題意為從一個亂序陣列中,將其中的整數按照出現的頻次多少來排列(並且出現幾次就排列幾個),比如輸入為[1,2,1,2,3,3,1,6,4,4,4,4],那麼輸出就應該為[4,4,4,4,1,1,1,2,2,3,3,6],其中,如果某兩個數字的出現頻次相同,那麼就按照輸入用例中的
9.15 愛奇藝筆試程式設計題
局長的食物 #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib
9.16 騰訊筆試程式設計題ac程式碼
思路: 求lcm(1, 2, …, n, …, m) = lcm(n + 1, …, m) 根據算數基本定理 #include <cstdio> #include <cstring> #include <cmath> #i
小米 秋招 筆試 程式設計題 句子反轉
題目 句子反轉 時間限制:1秒 空間限制:32768K 熱度指數:55050 演算法知識視訊講解 校招時部分企業筆試將禁止程式設計題跳出頁面,為提前適應,練習時請使用線上自測,而非本地IDE。 題目描述 給定一個句子(只包含字母和空格), 將句子中的單詞位置反