在 Python 中查詢由數字的字元對映形成的所有字串
假設我們有一個字元對映如下,這裡每個數字,從 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']
如果我們有一個數字,我們必須用給定對映列表中相應的字元替換其數字,並顯示所有生成的字串。我們應該為數字在數字中的每次出現考慮相同的字元。給定的數字不包含 0。
因此,如果輸入類似於 [4,3,5],則輸出將為
JGM KGM LGM JHM KHM LHM JIM KIM LIM JGN KGN LGN JHN KHN LHN JIN KIN LIN JGO KGO LGO JHO KHO LHO JIO KIO LIO
為了解決這個問題,我們將遵循以下步驟:
- out := 一個新的列表
- temp := 一個新的列表
- char_map := 一個新的對映
- index := 0
- 對於 inp 中的每個數字,執行以下操作:
- 如果數字不在 char_map 中,則:
- char_map[digit] := index
- 清空 temp 列表
- 對於 i 從 0 到 table[digit - 1] 的大小,執行以下操作:
- 如果 index 等於 0,則:
- s := table[digit - 1, i]
- 將 s 插入到 out 的末尾
- 如果 index > 0,則:
- 對於 out 中的每個字串,執行以下操作:
- s := table[digit - 1, i]
- 如果 char_map[digit] 不等於 index,則:
- s := string[char_map[digit]]
- string := string 連線 s
- 將 string 插入到 temp 的末尾
- 如果 char_map[digit] 不等於 index,則:
- s := table[digit - 1, i]
- 如果 char_map[digit] 不等於 index,則:
- 中斷
- 對於 out 中的每個字串,執行以下操作:
- 如果 index > 0,則:
- out := temp 的副本
- index := index + 1
- 如果 index 等於 0,則:
- 返回 out
- 如果數字不在 char_map 中,則:
示例
讓我們看看以下實現以更好地理解:
def findCombinations(inp, table): out = list() temp = list() char_map = dict() index = 0 for digit in inp: if digit not in char_map: char_map[digit] = index temp.clear() for i in range(len(table[digit - 1])): if index == 0: s = table[digit - 1][i] out.append(s) if index > 0: for string in out: s = table[digit - 1][i] if char_map[digit] != index: s = string[char_map[digit]] string = string + s temp.append(string) if char_map[digit] != index: break if index > 0: out = temp.copy() index += 1 return out mapping = [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I'], ['J', 'K', 'L'], ['M', 'N', 'O'], ['P', 'Q', 'R'], ['S', 'T', 'U'], ['V', 'W', 'X'], ['Y', 'Z']] inp = [4,3,5] res = findCombinations(inp, mapping) for it in res: print(it, end=" ")
輸入
[4,3,5]
輸出
JGM KGM LGM JHM KHM LHM JIM KIM LIM JGN KGN LGN JHN KHN LHN JIN KIN LIN JGO KGO LGO JHO KHO LHO JIO KIO LIO
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP