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=' ')