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

代码求助:修正筛选含指定字母为子序列的单词列表的函数

问题分析与修复方案

你的函数逻辑错了——你写的代码只是检查letters里的每个字母是否存在于单词中,但这和“把letters作为子序列包含”完全不是一回事。子序列要求letters里的字母按顺序出现在单词里(不需要连续,但顺序不能乱),比如letters是"abc",单词"acb"里三个字母都有,但顺序不对,原函数会错误地把它选出来。

修复后的代码

def is_subsequence(target, word):
    # 用指针追踪target的当前匹配位置
    target_idx = 0
    for char in word:
        if target_idx < len(target) and char == target[target_idx]:
            target_idx += 1
    # 如果所有target字符都按顺序匹配到了
    return target_idx == len(target)

def words_with_letters(words, letters):
    return [word for word in words if is_subsequence(letters, word)]

代码说明

  • is_subsequence函数专门用来判断letters是否是word的子序列:
    1. 初始化一个指针target_idx,用来标记当前需要匹配的letters字符位置
    2. 遍历单词的每个字符,一旦匹配到当前需要的letters字符,就把指针往后移一位
    3. 遍历结束后,如果指针走到了letters的末尾,说明所有字符都按顺序匹配完成
  • 主函数里直接用这个辅助函数做筛选,就能得到符合要求的单词列表了

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 03:35:20