Google 面试中的排列组合题。本文通过姓名排列生成问题,展示回溯算法和列表推导式的应用csvosupport* 助你掌握组合算法
📋 问题场景
给定姓氏列表和名字列表,生成所有可能的姓名组合
*示例
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
💼 csvosupport 助力
*Python 技 - 列表推导式和生成 *标准 - itertools 的高效使 代码风格 - Pythonic 写法
联系 csvosupport,专Python 面试辅助
*标签 #Google #Python #排列组合 #列表推导#VO辅助 #面试辅助 #一亩三分地
需要面试真题? 立刻联系微信 Coding0201,获得真题。