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

实现两字符串公共字符计数遇阻:已有思路但无法转化为代码

嘿,我太懂你这种“思路有了但代码写不出来”的卡壳感了!你的方向完全没错,核心就是统计两个字符串里各字符的出现次数,再对每个公共字符取两者的最小出现次数相加,就是总共有多少个公共字符啦。

具体解题步骤拆解
  • 第一步:统计每个字符串中每个字符的出现频率。可以用字典来存,键是字符,值是这个字符出现的次数。Python里还有个现成的工具collections.Counter,能一键帮你完成统计,省不少事。
  • 第二步:遍历其中一个字符频率字典,对每个字符检查它是否在另一个字典里存在。如果存在,就把两个字典里这个字符的出现次数取最小值,累加到总数里。

用Python内置工具的简洁实现

from collections import Counter

def commonCharacterCount(s1, s2):
    # 用Counter快速统计字符频率
    count_s1 = Counter(s1)
    count_s2 = Counter(s2)
    total_common = 0
    
    # 遍历s1的字符统计结果
    for char, cnt in count_s1.items():
        # 如果该字符在s2里也有,取最小次数累加
        if char in count_s2:
            total_common += min(cnt, count_s2[char])
    
    return total_common

# 测试示例
s1 = "aabcc"
s2 = "adcaa"
print(commonCharacterCount(s1, s2))  # 输出:3

手动统计的实现(不用内置库)

如果不想用Counter,手动写统计逻辑也很简单:

def commonCharacterCount(s1, s2):
    # 定义一个辅助函数,统计单个字符串的字符频率
    def get_char_count(s):
        char_count = {}
        for char in s:
            if char in char_count:
                char_count[char] += 1
            else:
                char_count[char] = 1
        return char_count
    
    count1 = get_char_count(s1)
    count2 = get_char_count(s2)
    total = 0
    
    for char in count1:
        if char in count2:
            total += min(count1[char], count2[char])
    
    return total

# 测试一下
print(commonCharacterCount("aabcc", "adcaa"))  # 输出:3

你看,两种方式的核心逻辑是一样的:先数清楚每个字符出现多少次,比如示例里s1的a出现2次、c出现2次,s2的a出现3次、c出现1次,取每个公共字符的最小次数(a取2,c取1),加起来2+1=3,正好就是正确答案啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:13:37