做了華為的三道程式設計題,以下是題解:
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 分別代表學生的...