You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode Q17:重复数字输入时字母组合代码输出[]问题排查

LeetCode第17题《电话号码的字母组合》代码问题排查

你遇到的问题是输入重复数字(比如'22'、'99')时输出空数组,核心原因出在字典的键唯一性上,具体分析和修复如下:

问题根源

你的代码里用了dec_dict来存储每个数字对应的字母列表,但字典的键是不能重复的。当输入是'22'时,遍历digits的两个'2',第二次赋值会覆盖第一次的,最终dec_dict里只有一个键'2',对应的to_do_value列表长度为1。后续循环中to_do_value[1:]是空列表,内层的for j in to_do_value[1:]根本不会执行,自然不会往result里加任何元素,输出就是空数组。

修复方案

直接跳过字典存储这一步,把每个数字对应的字母列表按顺序存入一个普通列表即可,不需要去重。另外原有的嵌套循环只适用于固定长度的输入(比如2个不同数字),可以优化成通用的组合逻辑,或者用itertools.product来简化。

修复后的代码(基于原逻辑修改)

from typing import List

def letterCombinations(digits: str) -> List[str]:
    result = []
    check_dict = {'2': ['a', 'b', 'c'],
            '3': ['d', 'e', 'f'],
            '4': ['g', 'h', 'i'],
            '5': ['j', 'k', 'l'],
            '6': ['m', 'n', 'o'],
            '7': ['p', 'q', 'r', 's'],
            '8': ['t', 'u', 'v'],
            '9': ['w', 'x', 'y', 'z']}

    if len(digits) == 0:
        return []
    elif len(digits) == 1:
        return check_dict.get(digits)
    else:
        # 直接按顺序收集每个数字对应的字母列表,保留重复项
        to_do_value = [check_dict[digit] for digit in digits]
        # 初始化结果为第一个数字的字母
        result = to_do_value[0].copy()
        # 遍历后续每个字母列表,逐个组合
        for chars in to_do_value[1:]:
            temp = []
            for s in result:
                for c in chars:
                    temp.append(s + c)
            result = temp

    return result

更简洁的写法(用itertools.product)

from typing import List
import itertools

def letterCombinations(digits: str) -> List[str]:
    if not digits:
        return []
    check_dict = {'2': ['a', 'b', 'c'],
            '3': ['d', 'e', 'f'],
            '4': ['g', 'h', 'i'],
            '5': ['j', 'k', 'l'],
            '6': ['m', 'n', 'o'],
            '7': ['p', 'q', 'r', 's'],
            '8': ['t', 'u', 'v'],
            '9': ['w', 'x', 'y', 'z']}
    chars_list = [check_dict[digit] for digit in digits]
    # product会生成所有笛卡尔积,再拼接成字符串
    return [''.join(comb) for comb in itertools.product(*chars_list)]

内容的提问来源于stack exchange,提问作者yic_l

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 11:17:19