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

如何实现不限制长度判断一个单词是否可由另一个单词的字母构成

问题根因

现有代码的判断逻辑为两个单词的字母计数字典完全相等,仅能实现变位词校验功能,要求两个单词的字母构成、各字母出现次数完全一致,所以只有长度相同时才会返回正确结果。你遇到的HEART包含EAT所有字母但返回错误的问题,就是因为HEART的字母计数字典多了H、R两个字母的计数项,两个字典不相等导致判定失败。

修复方案

将原有的全字典相等校验,替换为校验第一个单词的所有字母需求都能被第二个单词满足,只要同时符合以下两个条件即可判定为可组成:

  • 第一个单词用到的所有字母,第二个单词中都存在
  • 第一个单词中每个字母的出现次数,不超过第二个单词中对应字母的出现次数
修改后的完整代码
def word_checker():
    word_1 = input('Enter a word: ').upper()
    word_2 = input('Enter another word: ').upper()   

    # 统计第一个单词的字母计数
    word_1_dict = {}
    for char in word_1:
        word_1_dict[char] = word_1_dict.get(char, 0) + 1

    # 统计第二个单词的字母计数
    word_2_dict = {}
    for char in word_2:
        word_2_dict[char] = word_2_dict.get(char, 0) + 1

    # 校验第一个单词的所有字母需求是否被满足
    can_create = True
    for char, required_count in word_1_dict.items():
        if char not in word_2_dict or word_2_dict[char] < required_count:
            can_create = False
            break

    if can_create:
        print("THAT WORD CAN BE CREATED")
    else:
        print("THAT WORD CANT BE CREATED")

word_checker()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:09:03