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

如何统计两个字符串的公共字符?附代码示例及输出需求

修复统计两个字符串公共字符的JavaScript代码

问题说明

需要统计两个字符串的公共字符,以示例s1 = "abcd"、s2 = "aad"为例,期望输出{a:1, d:1},但现有代码无法得到正确结果。

原代码的问题

原代码存在多处逻辑错误:

  • let th = spilt2.includes(spilt1[i])得到的是布尔值(true/false),后续用th[i]无法获取对应字符,属于无效操作
  • 没有考虑两个字符串中字符出现次数的最小值(比如s2中a出现2次,但s1中仅出现1次,最终公共计数应取1)
  • 循环内的计数逻辑混乱,无法正确累加有效字符的次数

修复后的代码

var s1 = "abcd";
var s2 = "aad";
function match(s1, s2) {
    const count1 = {};
    const count2 = {};
    const result = {};

    // 统计s1中每个字符的出现次数
    for (const char of s1) {
        count1[char] = (count1[char] || 0) + 1;
    }

    // 统计s2中每个字符的出现次数
    for (const char of s2) {
        count2[char] = (count2[char] || 0) + 1;
    }

    // 遍历统计结果,取两个字符串中字符出现次数的最小值
    for (const char in count1) {
        if (count2[char]) {
            result[char] = Math.min(count1[char], count2[char]);
        }
    }

    return result;
}
console.log(match(s1, s2)); // 输出 {a:1, d:1}

代码逻辑说明

  1. 先分别统计两个字符串中每个字符的出现次数,存入count1和count2对象
  2. 遍历其中一个统计对象,检查当前字符是否在另一个统计对象中存在
  3. 若存在,取两个统计次数的最小值作为该公共字符的最终计数,存入结果对象
  4. 返回结果对象,得到符合预期的公共字符统计结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 09:00:56