python面試算法真題系列一

Tips:答案在所有問題的後邊
Githubd地址:https://github.com/zlhcsm/python_algorithm/blob/master/practice1.py 裏邊還有好多真題代碼呦!支持的大佬還請點個星星

題1

簡單的字符串排序
將字符串按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


題1代碼

#coding=utf-8
# 獲取輸入的字符串
l = input()

# 三個數組:c_array保存字符,n_array保存數字
# result保存結果數組
c_array = []
n_array = []
result = []

# 遍歷輸入,把字符串和數字分別加入對應數組
for i in l:
    if i.isalpha():
        c_array.append(i)
    else:
        n_array.append(i)

# 分別對應排序
n_array.sort()
c_array.sort()

# 將數字和字符順序加入結果
result.extend(n_array)
result.extend(c_array)

# 將list結果轉換爲str
print(''.join(result))

題2代碼

# dic:保存對應關係  mid:用來存放中間變量
dic = []
mid = []

# 生成最初字符串數字對應關係
for index in range(26):
    mid.extend(chr(index+ ord('a')))
    if ((index + 1) % 3 == 0) | (index == 25):    # 遇到三個時加入另一個數字,25是因爲最後的數字不夠對應三個元素
        dic.append(mid)
        mid = []


# 獲取輸入的值並且存儲爲list
l = input()
i_index = []
for item in l:
    i_index.extend(item)

# 生成對應關係
# res裏存放是結果數組  flag是標誌是否是第一次循環
res = []
flag = 0
for 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=' ')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章