← 返回博客列表
Google

Google 算法面试:高效生成姓名排列组合

2025-10-31

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,获得真题