華為2020校招筆試程式設計題

2022-08-31 20:54:12 字數 3725 閱讀 9995

剛做完華為的筆試題,簡要描述一下三道程式設計題的解決方法以及python**實現

第一題大致描述:

給定兩個已經公升序排序好的的序列a= 和b= ,乙個數r,找出滿足以下條件的的(ai,bj)序列對

1.ai<=bj

2.bj和ai兩者的距離 滿足 bj-ai<=r ,要是該條件不滿足,就從序列b中找出 和ai 距離最接近r的乙個點bj(同時要滿足條件1)

輸入樣例:a=,b=,r=1

輸出樣例:(1,2)(3,4)(5,6)

解決思路:遍歷所有序列對,找出滿足條件的對即可

**如下:(測試通過)

import

syss=sys.stdin.readline()

#獲取a、b、r的值,用正規表示式匹配會更容易

a=s.find('')

a_str=s[a+1:b].split(','

)a=[int(x) for x in

a_str]

a=s.rfind('')

b_str=s[a+1:b].split(','

)b=[int(x) for x in

b_str]

a=s.rfind('='

)r=int(s[a+1:])

res=

for x in

a: has_find=false

for y in

b:

if x<= y and y-x<=r:

has_find=true

elif x<=y and y-x>r and has_find==false:

break

for x in

res:

print('

({},{})

'.format(x[0],x[1]),end='')

第二題大致描述

對一行給定的字串進行反轉輸出,同時去除中間不滿足條件的分隔符

輸入字串:i am an 20-years out--standing @ * -stu- dent

去除分割符並反轉之後,輸出字串(子字串以乙個空格隔開):dent stu standing out 20-years an am i

分割符描述如下:

1、除了字母、數字和 - 之外,其他的都是分割符,如輸入字串中的@ *等都屬於分割符

2、20-years中的'-' 表示的是連線符,即當『-』兩邊都有字母、數字時,『-』就屬於連線符,否則屬於分割符

3、out--standing中的『--』表示分割符,應該拆分為兩個字字串out 和 standing

解決思路:用棧去實現,遍歷輸入字串的字元:

1、遇到字母和數字就入棧。

2、遇到『-』的時候就判斷是分割符還是連線符,要是是分割符,就彈出所有棧元素,構成乙個子字串,否則就入棧

3、遇到其他分割符,彈出所有棧元素,構成子字串

找到所有子字串,就可以做反序輸出處理

python**如下:(測試通過)

import

sys#

使用棧去解決問題

#s="i am an 20-years out--standing @ * -stu- dent"

s=sys.stdin.readline()

word=

res=

for x in

s: if'

0'<= x <='9'

or'a'

<=x <='z'

or'a'

<=x<='z'

:

elif x=='-'

:

if len(word)==0:

continue

else

:

if word[-1]=='-'

: word.pop()

''.join(word))

word =

else

:

else

:

if len(word)>0:

if(word[-1]=='-'

): word.pop()

''.join(word))

word=

if(len(word)>0):

if word[-1]=='-'

: word.pop()

''.join(word))

for s in res[::-1]:

print(s,end='

')

第三題大致描述如下:

給定多組原本的航班預訂資訊(航班號,座位號,乘客姓名),以及多組要改簽的航班資訊(原本航班號,原本座位號,新航班號,新座位號)

輸出最後的航班預訂資訊,要是有重複的內容,以最新改簽的為標準

輸入的內容如下: 3 表示原本的航班資訊數,2表示要改簽的航班數

3

cz7132,a1,zhangsan

cz7132,a2,zhaosi

cz7156,a2,wangwu

2cz7132,a1,cz7156,a2

cz7156,a2,cz7156,a3

輸出內容如下:

cz7132,a2,zhaosi

cz7156,a2,zhangsa

cz7156,a3,wangw

解決思路,採用python的字典去表示機票位置資訊和乘客姓名的對應關係

old_booking_name_piao={}

sum_num=int(input())

for i in

range(sum_num):

msg=input()

m=msg.rfind(','

) piao=msg[0:m]

name=msg[m+1:]

old_booking_name_piao[name]=piao

old_booking_piao_name[piao]=name

chang_booking=

num=int(input())

for i in

range(num):

msg =input()

m = msg.split(','

) old = m[0]+'

,'+m[1]

new = m[2]+'

,'+m[3]

#print(old,new)

new_booking_name_piao_copy=old_booking_name_piao.copy()

for x in

chang_booking:

name=old_booking_piao_name[x[0]]

new_booking_name_piao_copy.pop(name)

new_booking_name_piao_copy[name]=x[1]

#print(new_booking_name_piao_copy)

for key,val in

new_booking_name_piao_copy.items():

print(val+'

,'+key)

2020華為筆試程式設計題

給定兩個字元集合,乙個為全量字符集,乙個為已占用字符集。已占用的字符集中的字元不能再使用,要求輸出剩餘可用字符集。輸入描述 輸入為乙個字串,字串中包含了全量字符集和已占用字符集,兩個字符集使用 連線,前面為全量,後面為已占用。已占用字符集中的字元一定是全量字符集中的字元。字符集中的字元跟字元之間用英...

京東2015校招筆試程式設計題

醜數問題,在 劍指offer 一書的182頁有詳細討論。簡單來說,就是 新的醜數總是以前的某個醜數乘以2 3或5產生,那麼分別用三個指標p2 p3和p5指向乘以2 3和5後能生成新的醜數的醜數,那麼下乙個醜數就是它們生成的新的醜數中最小的乙個。public static int kthnumber ...

網易2018校招筆試程式設計題

小易準備去魔法王國採購魔法神器,購買魔法神器需要使用魔法幣,但是小易現在一枚魔法幣都沒有,但是小易有兩台魔法機器可以通過投入x x可以為0 個魔法幣產生更多的魔法幣。魔法機器1 如果投入x個魔法幣,魔法機器會將其變為2x 1個魔法幣 魔法機器2 如果投入x個魔法幣,魔法機器會將其變為2x 2個魔法幣...