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

解析C++ kthDistinct函数代码逻辑,重点理解指定遍历判断段

代码整体功能

该C++函数的作用是从传入的字符串数组arr中,找出第k个仅出现一次的字符串,如果符合要求的字符串数量不足k个,则返回空字符串。

逐段逻辑讲解

前置计数逻辑

unordered_map<string, int> m;
for (auto &s : arr)
    ++m[s];

这部分先遍历整个数组,用哈希表m统计每个字符串的出现次数:键是数组里的字符串,值是对应字符串的出现次数。


核心逻辑段(//From here 到 //to here)

for (auto &s : arr)
    if (m[s] == 1 && --k == 0)
        return s;
return "";

这段的执行逻辑按顺序拆解:

  • 第二次按原数组的顺序遍历每一个字符串s
  • 对每个字符串的判断用了短路逻辑与&&,只有前一个条件成立时才会执行后一个判断:
    • 第一个判断m[s] == 1:检查当前字符串是不是只出现过一次的「独特字符串」
    • 只有第一个条件满足时,才会执行--k == 0:把计数器k减1,判断减完之后k是否等于0,等于0就说明当前的这个独特字符串就是我们要找的第k个
  • 一旦两个条件都满足,直接返回当前的字符串s
  • 如果遍历完整个数组都没有找到符合要求的第k个独特字符串,最后返回空字符串""

示例演示

比如输入arr = ["a","b","a","c","d"],k=2:

  1. 第一次统计完哈希表:a:2, b:1, c:1, d:1
  2. 第二次遍历数组:
    • 第一个元素是a,出现次数为2,直接跳过
    • 第二个元素是b,出现次数为1,k减1变为1,不等于0,继续遍历
    • 第三个元素是a,跳过
    • 第四个元素是c,出现次数为1,k减1变为0,符合条件,返回c,也就是第2个独特字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:36:08