生活随笔
收集整理的這篇文章主要介紹了
2018秋招中国电信笔试题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.求一個32bit的數的反轉。 分析:1.考慮溢出問題,2.考慮尾部為0的反轉。 轉成字符串進行反轉,然后再轉成整形,如果溢出則為0
def process (data) :result=
0 data1 = int(data)
if data1 >=
0 :result=int(data[::-
1 ])
else :result=-
1 *int(str(-
1 *data1)[::-
1 ])
if (result>
2 **
31 -
1 )
or (result<-
2 **
31 ):
return 0 else :
return result
data=raw_input()
print process(data)
2.讀入一個自然數,將n的階乘結果的數值的每一位相加,返回相加結果。 例如 n=14,輸出結果為45.14!=87178291200,累加和為45. 分析:先計算階乘,然后分割數字,累加
data =int(raw_input () )
num =reduce(lambda x,y:x*y,range(
1 ,
data +1))
print sum(map(int,str(num)))
3.設a,b,c,d均是0-9之間的數字,abcd,bcda是兩個四位數,且有abcd+bcda=8888.求滿足條件的所有a,b,c,d的值。 輸出描述:輸出所有滿足條件的a,b,c,d的值,a,b,c,d之間用空格隔開,每個輸出占一行。 分析:a必須小于等于8,b必須小于等于8, d+a=8從而d必須小于等于8,b+c=8,c必須小于等于8.…… 從而推出沒有進位。 a+b=8 a+d=8 b=d b+c=8 a=c b=8-a 很奇怪,直接輸出是顯示格式不正確,所以才存起來,再輸出的。
data =[]
for a
in range(
9 ):c=ab=d=
8 -a
data .append([a ,b ,c ,d ])
for i
in data :for j
in i:print j,print
4.實現刪除字符串中出現次數最少的字符,若多個字符出現次數一樣,則都刪除,輸出刪除這些單詞后的字符串,保持原順序。 abcdd dd sssddfg sssdd 分析:字典記錄每個字符出現次數,然后刪除最小的。
data =raw_input()
dict_data ={}
for i
in set(
data ):dict_data[i]=
data .count(i )
min_value =min(dict_data.values())
result =
""
for i
in data :if dict_data[i]!=min_value:result+=i
print result
5.給定兩個字符串,求他們前后重疊的最長子串的長度,比如abcde和cdefg是cde長度為3,注意是前后重疊,比如abcdeh和cdefg中的cde不是前后重疊,長度為0; 分析:后重疊與前重疊其實就是交換字符串位置。 提取data1的后字符串與data2的前字符串,相同則記錄并終止程序,交換一次后再進行一次,統計最大值。
def
process (
a ,b):max_num=
0 left =
len (
a ) -
len (b)
if len (
a ) -
len (b) >
0 else 0 for i
in range(left,
len (
a )):
right =
len (
a ) - isuba =
a [i:i+
len (
a ) - left]subb = b[
0 :
right ]print suba,subb
if suba == subb:
if len (suba) > max_num:max_num =
len (suba)break
return max_numdata=raw_input().
split ()
a ,b=data[
0 ],data[
1 ]
print
max (
process (
a ,b),
process (b,
a ))
總結
以上是生活随笔 為你收集整理的2018秋招中国电信笔试题 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。