← 返回博客列表
Google

Google 演算法面試:高效生成姓名排列組合

2025-10-31

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獲得真題