网易首页 > 网易号 > 正文 申请入驻

2026-06-11:前缀连接组的数目。用go语言,给你一个字符串数组 words 和一个整数 k。 如果两个来自不同位置的单词 a、b 满足:它们从开头

0
分享至

2026-06-11:前缀连接组的数目。用go语言,给你一个字符串数组 words 和一个整数 k。
如果两个来自不同位置的单词 a、b 满足:它们从开头开始的前 k 个字符完全相同(即 a 的前 k 位等于 b 的前 k 位),那么称这两个单词“可前缀连接”。

一个“连接组”指由一些单词组成的集合,并且集合中的任意两两个单词都两两满足“可前缀连接”。

要求你统计:在给定的 words 中,能形成的、包含至少两个单词的连接组的数量。

注意:长度少于 k 的单词无法提供有效前 k 位前缀,因此必须忽略。即使字符串内容重复,也算作不同的单词。

1 <= words.length <= 5000。

1 <= words[i].length <= 100。

1 <= k <= 100。

words 中的所有字符串均由小写英文字母组成。

输入: words = ["apple","apply","banana","bandit"], k = 2。

输出: 2。

解释:

共享相同前 k = 2 个字母的单词被分为一组:

words[0] = "apple" 和 words[1] = "apply" 共享前缀 "ap"。

words[2] = "banana" 和 words[3] = "bandit" 共享前缀 "ba"。

因此,共有 2 个连接组,每个组至少包含两个单词。

题目来自力扣3839。

前缀连接组数目解题过程 第一步:初始化统计工具

创建一个空的哈希映射(字典),作用是:键 = 有效前缀(前k个字符),值 = 该前缀出现的单词数量
同时定义一个结果变量,初始值为0,用于记录最终符合条件的连接组数量。

第二步:遍历所有单词,筛选有效单词并统计前缀

逐个处理字符串数组中的每一个单词,执行以下操作:

  1. 1.判断单词是否有效:检查当前单词的长度是否 ≥ k。

  • • 如果长度 < k:直接忽略该单词,不做任何处理;

  • • 如果长度 ≥ k:该单词为有效单词,继续下一步。

2.提取有效前缀:截取有效单词的前k个字符作为前缀。

3.更新统计映射:在哈希映射中,将该前缀对应的计数 +1。

具体执行过程:

  1. 1. 处理apple:长度5≥2,提取前缀ap,映射中ap:1

  2. 2. 处理apply:长度5≥2,提取前缀ap,映射中ap:2

  3. 3. 处理banana:长度6≥2,提取前缀ba,映射中ba:1

  4. 4. 处理bandit:长度6≥2,提取前缀ba,映射中ba:2

最终哈希映射结果:ap:2ba:2

第三步:遍历统计映射,计算符合条件的连接组数量

连接组的定义:包含至少两个单词的前缀组。
因此我们遍历哈希映射中的所有计数值:

  1. 1. 逐个读取每个前缀对应的出现次数;

  2. 2. 如果次数> 1(说明该前缀下有至少两个单词,能形成一个有效连接组);

  3. 3. 每满足一次条件,结果变量就 +1。

具体执行过程:
  1. 1. 前缀ap计数=2>1 → 结果+1(结果=1);

  2. 2. 前缀ba计数=2>1 → 结果+1(结果=2)。

第四步:返回最终结果

最终结果为2,与题目示例输出一致。

时间复杂度与额外空间复杂度分析 1. 总时间复杂度

我们分两步计算核心操作的时间:

  1. 1.遍历单词统计前缀:需要遍历n个单词(n是words的长度,最大5000),每个单词截取前k个字符的操作是O(k),总耗时O(n*k)

  2. 2.遍历哈希映射统计结果:哈希映射的键数量最多为n(所有前缀都不重复),遍历耗时O(n)

综合来看,总时间复杂度为 O(n * k)

  • • n:字符串数组的长度

  • • k:指定的前缀长度

2. 总额外空间复杂度

额外空间指除了输入数据外,程序运行时开辟的内存空间

  1. 1. 核心空间是哈希映射:最坏情况下,所有有效单词的前缀都不重复,哈希映射会存储最多n个键值对;

  2. 2. 其他变量(计数、结果)都是常数级空间O(1)

因此,总额外空间复杂度为 O(n)

总结

  1. 1. 解题核心:用哈希表统计有效前缀的出现次数,再统计次数≥2的前缀数量;

  2. 2. 时间复杂度:O(n*k),高效适配题目给定的数据范围;

  3. 3. 空间复杂度:O(n),仅使用哈希表存储前缀统计数据。

Go完整代码如下:

package main

import (
"fmt"
)

func prefixConnected(words []string, k int) (ans int) {
cnt := map[string]int{}
for _, w := range words {
iflen(w) >= k {
cnt[w[:k]]++
}
}

for _, c := range cnt {
if c > 1 {
ans++
}
}
return
}

func main() {
words := []string{"apple", "apply", "banana", "bandit"}
k := 2
result := prefixConnected(words, k)
fmt.Println(result)
}

Python完整代码如下:

# -*-coding:utf-8-*-

def prefixConnected(words, k):
cnt = {}
for w in words:
iflen(w) >= k:
prefix = w[:k]
cnt[prefix] = cnt.get(prefix, 0) + 1

ans = 0
for c in cnt.values():
if c > 1:
ans += 1
return ans

if __name__ == "__main__":
words = ["apple", "apply", "banana", "bandit"]
k = 2
result = prefixConnected(words, k)
print(result)

C++完整代码如下:

  




using namespace std;

int prefixConnected(vector& words, int k) {
unordered_map cnt;

for (conststring& w : words) {
if (w.length() >= k) {
string prefix = w.substr(0, k);
cnt[prefix]++;
}
}

int ans = 0;
for (const auto& pair : cnt) {
if (pair.second > 1) {
ans++;
}
}

return ans;
}

int main() {
vector words = {"apple", "apply", "banana", "bandit"};
int k = 2;
int result = prefixConnected(words, k);
cout << result << endl;

return0;
}

我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
歌唱家关牧村:我这辈子做的最正确的决定就是,45岁带娃嫁给高官,如今被宠了27年

歌唱家关牧村:我这辈子做的最正确的决定就是,45岁带娃嫁给高官,如今被宠了27年

品茗赏娱
2026-08-10 22:34:24
遇见狠人了!浙江一车主图方便占用他人车位,一夜醒来发现四扇车门变形损失大几千

遇见狠人了!浙江一车主图方便占用他人车位,一夜醒来发现四扇车门变形损失大几千

Mr王的饭后茶
2026-08-11 16:20:18
问界给积极车主送临期大米?离过期仅剩2天

问界给积极车主送临期大米?离过期仅剩2天

西虹市闲话
2026-08-11 17:27:05
广东24岁美女姜小柔去世!砸观音荒地钉八字,知情人曝死因属横祸

广东24岁美女姜小柔去世!砸观音荒地钉八字,知情人曝死因属横祸

米果说识
2026-08-11 10:12:53
伊朗最高领袖连夜签了6张任命状:71岁老将一人身兼两个关键职位,他前面两任全死于空袭

伊朗最高领袖连夜签了6张任命状:71岁老将一人身兼两个关键职位,他前面两任全死于空袭

网易新闻出品
2026-08-11 18:56:48
男童被巨浪卷走后续,官媒怒批家属,当地不敢救,救了也必死无疑

男童被巨浪卷走后续,官媒怒批家属,当地不敢救,救了也必死无疑

社会日日鲜
2026-08-11 09:21:27
2026年了,为什么国家突然要再扫一年黑?

2026年了,为什么国家突然要再扫一年黑?

李博世财经
2026-08-11 09:51:22
内蒙古一警车被换标成长城汽车,网友称:哪是换标那么简单

内蒙古一警车被换标成长城汽车,网友称:哪是换标那么简单

Mr王的饭后茶
2026-08-11 10:55:29
卫诗雅爆冷拿下百花影后孤身离场!全场只有朱一龙送上拥抱太戳人

卫诗雅爆冷拿下百花影后孤身离场!全场只有朱一龙送上拥抱太戳人

阿废冷眼观察所
2026-08-12 04:26:53
上海45岁女程序员被裁拿30多万,简历全沉了,现在送外卖,老妈哭了,哭的很伤心

上海45岁女程序员被裁拿30多万,简历全沉了,现在送外卖,老妈哭了,哭的很伤心

捣蛋窝
2026-08-11 22:49:34
韩旭:为什么说近些年司法进步不容乐观?

韩旭:为什么说近些年司法进步不容乐观?

天下说法
2026-08-11 09:11:44
第二批朝鲜兵抵达俄罗斯!兵力5万+新武器,泽连斯基最担心的事情还是发生了

第二批朝鲜兵抵达俄罗斯!兵力5万+新武器,泽连斯基最担心的事情还是发生了

军武次位面
2026-08-10 17:55:01
财经大V:80%的男人一个月赚不到7000元,如果你税后7000元,不管男女,你可能已经胜过90%的人,评论区一片认同

财经大V:80%的男人一个月赚不到7000元,如果你税后7000元,不管男女,你可能已经胜过90%的人,评论区一片认同

谭谈社会
2026-08-11 20:56:50
看完沈腾《欢迎来龙餐馆》后,猛然发现这个狂砍400多亿票房的中国影史第一人,在国内却是个零蛋影帝!

看完沈腾《欢迎来龙餐馆》后,猛然发现这个狂砍400多亿票房的中国影史第一人,在国内却是个零蛋影帝!

娱乐故事
2026-08-11 21:42:55
WTT瑞典大满贯:大爆冷!男单头号种子0:3一轮游,被扣2000分

WTT瑞典大满贯:大爆冷!男单头号种子0:3一轮游,被扣2000分

国乒二三事
2026-08-12 03:50:21
广东省最强医院迎来最大规模扩建

广东省最强医院迎来最大规模扩建

牛锅巴小钒
2026-08-12 05:15:09
无视中国网友!波兰名将拒道歉 继续辱华:中国气味像米饭配鸡肉

无视中国网友!波兰名将拒道歉 继续辱华:中国气味像米饭配鸡肉

念洲
2026-08-11 06:50:26
巴沙尔·阿萨德,被判死刑

巴沙尔·阿萨德,被判死刑

南方都市报
2026-08-11 17:59:32
八卦媒体曝方文山出轨,与艺人Y女士多年保持地下情人关系

八卦媒体曝方文山出轨,与艺人Y女士多年保持地下情人关系

韩小娱
2026-08-11 12:01:28
脸都不要了?王宝强百花奖0票,这是200亿影帝的“羞辱”之夜

脸都不要了?王宝强百花奖0票,这是200亿影帝的“羞辱”之夜

文刀贰
2026-08-10 22:59:15
2026-08-12 08:36:49
moonfdd incentive-icons
moonfdd
福大大架构师每日一题
1388文章数 79关注度
往期回顾 全部

教育要闻

务必告诉孩子:9件事永远不要对爸妈保密,刷到就是救到

头条要闻

57岁保洁员掏空5万积蓄做医美 术后1个月感到视力下降

头条要闻

57岁保洁员掏空5万积蓄做医美 术后1个月感到视力下降

体育要闻

NBA老顽童,抽着大麻喝着小酒告别了

娱乐要闻

“雅典娜”确认被害 细节令人发指!

财经要闻

AI泡沫的剧本,是2008年的次贷危机?

科技要闻

AI大战变天:扎克伯格突然回头

汽车要闻

闪充/天神之眼B/云辇-C 2027款海豹06售9.99万元起

态度原创

艺术
旅游
房产
本地
游戏

艺术要闻

色彩的盛宴,视觉的狂欢:西班牙水彩大师福斯蒂诺·马丁·冈萨雷斯的艺术世界

旅游要闻

四川自贡小哥带200元,骑电动车往返拉萨3500公里:最牛骑行者

房产要闻

突发,崖州湾又有大动作!

本地新闻

黄州一夜,苏轼写给普通人的月光

魔兽世界:时光服紧急削弱,精英玩家破灭,难度党为什么消失了?

无障碍浏览 进入关怀版