สมมติว่าเรามีการแมปอักขระดังนี้ ที่นี่แต่ละหลัก ตั้งแต่ 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
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ออก :=รายการใหม่
- temp :=รายการใหม่
- char_map :=แผนที่ใหม่
- ดัชนี :=0
- สำหรับแต่ละหลักใน inp ทำ
- ถ้าตัวเลขไม่อยู่ใน char_map แล้ว
- char_map[ตัวเลข] :=ดัชนี
- ล้างรายการชั่วคราว
- สำหรับฉันในช่วง 0 ถึงขนาดของตาราง[หลัก - 1] ทำ
- ถ้าดัชนีเท่ากับ 0 แล้ว
- s :=table[ตัวเลข - 1, i]
- แทรก s ที่ส่วนท้ายของออก
- ถ้าดัชนี> 0 คือ
- สำหรับแต่ละสตริงเข้าออก ทำ
- s :=table[ตัวเลข - 1, i]
- หาก char_map[ตัวเลข] ไม่เหมือนกับดัชนี
- s :=string[char_map[digit]]
- string :=string concatenate s
- ใส่สตริงที่ส่วนท้ายของอุณหภูมิ
- หาก char_map[ตัวเลข] ไม่เหมือนกับดัชนี
- s :=table[ตัวเลข - 1, i]
- หาก char_map[ตัวเลข] ไม่เหมือนกับดัชนี
- แตก
- สำหรับแต่ละสตริงเข้าออก ทำ
- ถ้าดัชนี> 0 แล้ว
- ออก :=สำเนาชั่วคราว
- ดัชนี :=ดัชนี + 1
- ถ้าดัชนีเท่ากับ 0 แล้ว
- คืนสินค้า
- ถ้าตัวเลขไม่อยู่ใน 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