python面試演算法真題系列一

2021-09-25 20:04:30 字數 2495 閱讀 1416

tips:答案在所有問題的後邊

簡單的字串排序

將字串按ascii的順序進行排序

注意,用例的輸入是input()

輸入描述

cba

輸出描述

abc

示例1

輸入

cba

輸出abc

示例2

輸入

031fc

輸出

013cf

題2

字元對映

(1) 有乙個字元生成裝置,有按鈕1-9,其中每個數字對應多個字母,對應關係如下:

1 – a,b,c

2 – d,e,f

3 – g,h,i

4 – j,k,l

5 – m,n,o

6 – p,q,r

7 – s,t,u

8 – v,w,x

9 – y,z

現在給出乙個只包含1-9的點按序列,返回所有可能的對映組合,以字典序輸出。

輸入描述

輸入:

13

輸出描述

輸出:

ag ah ai bg bh bi cg ch ci

示例1

輸入

13

輸出ag ah ai bg bh bi cg ch ci

#coding=utf-8

# 獲取輸入的字串

l =input()

# 三個陣列:c_array儲存字元,n_array儲存數字

# result儲存結果陣列

c_array =

n_array =

result =

# 遍歷輸入,把字串和數字分別加入對應陣列

for i in l:

if i.isalpha():

else

:# 分別對應排序

n_array.sort(

)c_array.sort(

)# 將數字和字元順序加入結果

result.extend(n_array)

result.extend(c_array)

# 將list結果轉換為str

print(''

.join(result)

)

# dic:儲存對應關係  mid:用來存放中間變數

dic =

mid =

# 生成最初字串數字對應關係

for index in

range(26

):mid.extend(

chr(index+

ord(

'a')))

if((index +1)

%3==0

)|(index ==25)

:# 遇到三個時加入另乙個數字,25是因為最後的數字不夠對應三個元素

mid =

# 獲取輸入的值並且儲存為list

l =input()

i_index =

for item in l:

i_index.extend(item)

# 生成對應關係

# res裡存放是結果陣列 flag是標誌是否是第一次迴圈

res =

flag =

0for item in i_index:

if flag ==0:

res = dic[

int(item)-1

]# 如果是第一次迴圈,就直接賦值就好

else

: res =

[(x + y)

for x in res for y in dic[

int(item)-1

]]# 生成兩個陣列的笛卡爾積

flag =

1# 第一次迴圈後,將標誌位記為1

res.sort(

)# 排序

# 輸出結果

for i in

range

(len

(res)):

print

(res[i]

, end=

' ')

python 面試演算法題

1 2 1.買賣 的最佳時機給定乙個陣列,它的第?i?個元素是一支給定 第?i?天的 3如果你最多隻允許完成一筆交易 即 和賣出一支 設計乙個演算法來計算你所能獲取的最大利潤。4注意你不能在 前賣出 5分 5要求 61.輸入 7,1,5,3,6,4 72.輸出 5 83.解釋 在第 2 天 1 的時...

面試演算法題

前幾天,一好友去筆試,有一題 現在有1000個蘋果,和10個箱子,如何把這1000個蘋果裝在這10個箱子裡,才能使不管任何數量 1 1000 的蘋果,都能一次給出?當時,我們都想,出題這人。今天,在想移位的時候,突然想到了,這絕對是二進位制數的變種。分析 1000個蘋果,最接近1024,轉化為2進製...

面試演算法題

1 直方圖矩形最大值 class solution s.push i return res 2 第n個醜數 class solution return res.back 3 lru cache 最近最少使用頁面置換快取器 class lrucache int get int key void set...