Google 面試中的排列組合題。本文通過姓名排列生成問題,展示回溯演算法和列表推導式的應用,oavoservice 助你掌握組合演算法。
📋 問題場景
給定姓氏列表和名字列表,生成所有可能的姓名組合。
範例:
surnames = ["Smith", "Johnson"]
first_names = ["John", "Jane"]
Output: ["John Smith", "John Johnson", "Jane Smith", "Jane Johnson"]
🎯 解法對比
方法一:巢狀迴圈
def generate_names_v1(surnames, first_names):
result = []
for first in first_names:
for last in surnames:
result.append(f"{first} {last}")
return result
方法二:列表推導式 (Pythonic)
def generate_names_v2(surnames, first_names):
return [f"{first} {last}"
for first in first_names
for last in surnames]
方法三:itertools (最優雅)
from itertools import product
def generate_names_v3(surnames, first_names):
return [f"{first} {last}"
for first, last in product(first_names, surnames)]
🚀 擴展:帶中間名
def generate_full_names(first, middle, last):
# 支援可選中間名
names = []
for f in first:
for l in last:
names.append(f"{f} {l}")
for m in middle:
names.append(f"{f} {m} {l}")
return names
💼 oavoservice 助力
Python 技巧 - 列表推導式和生成器 標準庫 - itertools 的高效使用 程式碼風格 - Pythonic 寫法
聯繫 oavoservice,專業 Python 面試輔助!
標籤: #Google #Python #排列組合 #列表推導 #VO輔助 #面試輔助 #一畝三分地
需要面試真題? 立刻聯繫微信 Coding0201,獲得真題。