華為實習程式設計測試題解(2018 03 21)

2021-08-17 08:41:08 字數 2890 閱讀 8704

做了華為的三道程式設計題,以下是題解:

1.在字串中找出連續最長的數字串

題目大意:輸入乙個字串,輸出最長的連續數字字串,並輸出其長度,中間用逗號隔開。比如輸入123abc,輸出123,3

另外,要求數字串中每個數字不要求按順序,比如123ab2357中最長數字串應該是2357;而且,如果有多個最長串,則輸出最後乙個,比如123ab234,則答案輸出是234,3。

解題思路:

首先用乙個陣列dp來儲存當前位置的最大連續數字串,只需遍歷輸入字串一次就可以得到dp,然後遍歷dp,找到最大值的最後出現的位置,然後找到相應的字串即可,**如下:

# -*-coding:utf-8 -*-

while true:

try:

s = raw_input()

ls = len(s)

dp = [0 for i in range(ls)]

for i in range(ls):

if 57 >= ord(s[i]) >= 48:

if i - 1 >= 0:

dp[i] = dp[i - 1] + 1

else:

dp[i] = 1

ans = max(dp)

if ans==0:print ''+','+'0'

else:

tmp=''

res=0

for k in range(ls):

if dp[k]==ans:

res=k

tmp+=s[res-ans+1:res+1]

print ''.join(tmp)+','+str(ans)

except:

break

2.位元組流解析

題目大意:

/*

輸入:位元組陣列長度uiiutputlen為3;

位元組陣列ainputbyte[3]為,對應二進位制為「0110 0010 ,1000 0000,0000 0000」;

解析數值個數uielementnum為2;

數值[0]的值佔4個bit,即astelement[0].uielementlength = 4;

數值[1]的值佔5個bit,即astelement[1].uielementlength = 5;

輸出:數值[0]的值為6,二進位制為「0110」,即astelement[0].uielementvalue = 6;

數值[1]的值為5,二進位制為「0010 1」,即astelement[1].uielementvalue = 5。

題解:先依次將16進製制位元組進行轉化成二進位制,如果不滿8位的字首用0湊齊8位,並儲存進乙個字串,轉化注意進製識別符號;然後根據astelement陣列中要求的每個數值佔幾個bit,擷取二進位制位數,並將其轉化為十進位制輸出。

**如下:

#-*-coding:utf-8 -*-

def solve(n,abyte,t,res):

s=''

k=0for i in range(n):

er=str(str(abyte[i])[2:])

tmp=bin(int(er,16))

o=tmp[2:]

if(len(o)<8):

s+='0'*(8-len(o))+tmp[2:]

else:

s+=o

for i in range(t):

w=res[i]

ep=''

e=wwhile(e>0):

if(s[k]!=''):

ep+=s[k]

e-=1

k+=1

sol=0

for u in ep:

sol+=int(u)*(2**(w-1))

w-=1

print sol

if __name__ == '__main__':

n=int(raw_input())

abyte=map(str,raw_input().split(' '))

res=

t=int(raw_input())

for i in range(t):

a=int(raw_input())

solve(n,abyte,t,res)

3.大整數相乘

題目大意:給定兩個大整數a,b,對其進行求乘積。

題目思路:可以將a和b分別用陣列進行儲存,然後對兩個陣列按照乘法規則進行計算,注意進製,然後存入另乙個陣列,最後輸出,注意正負號。

#-*-coding:utf-8 -*-

s1=raw_input()

s2=raw_input()

d1=1

d2=1

if(s1[0]=='-'):

d1=-1

s1=s1[1:]

if(s2[0]=='-'):

d2=-1

s2=s2[1:]

s=''

ls1=len(s1)

ls2=len(s2)

s1=s1[::-1]

s2=s2[::-1]

dp=[0]*(ls1+ls2)

for i in range(ls2):

g=0for j in range(i,i+ls1):

res=int(s2[i])*int(s1[j-i])

dp[j]=dp[j]+res+g

g=dp[j]//10

dp[j]=dp[j]%10

dp[j+1]=dp[j+1]+g

if(d1*d2==-1):

s='-'

print s+str(int(''.join([str(x) for x in dp[::-1]])))

華為fx測試題

1.小k是x區域的銷售經理,他平常常駐 5 城市,並且經常要到 1 2 3 4 6 城市出差。當機場出現大霧情況時,會導致對應城市的所有航班的起飛及降落均停止 即不能從該城市出發,其他城市也不能到達該城市 小k希望知道如果他需要到x城市出差時,如果遇到y城市出現大霧,他最短的飛行時間及飛行路徑。注意...

19 2 18 測試題解

題太水了懶得乙個乙個發 t1 題意就是5000000個點,10000000條邊,邊權只有1或2,求最短路 我的做法 先bb一句,要開始考試的時候l讓我和gigo,gsy去樓下考,我說看一下題再決定,然後他說 你看,第一題是裸的最短路。又因為我懶得搬東西去樓下並且不想承受爆零 墊底的壓力,於是就留在樓...

華為上機測試題目

汽水瓶明明的隨機數 進製轉換 最後乙個單詞的長度 計算字元的個數 老師想知道從某某同學當中,分數最高的是多少,現在請你程式設計模擬老師的詢問。當然,老師有時候需要更新某位同學的成績.輸入描述 輸入包括多組測試資料。每組輸入第一行是兩個正整數n和m 0 n 30000,0 m 5000 分別代表學生的...