Shortest Prefixes 字典树 (前缀树) 入门题 题解

caramel

caribou

carbonic

cartilage

carbon

carriage

carton

car

carbonate

Sample Output

carbohydrate carboh

cart cart

carburetor carbu

caramel cara

caribou cari

carbonic carboni

cartilage carti

carbon carbon

carriage carr

carton carto

car car

carbonate carbona

(2)题解

========================================================================

这道题的题意是 输出最短的前缀唯一地(没有歧义)标识这个单词。字典树的入门题,只需要在原来的

需要文中资料的朋友,可以加我\/信获取:vip1024b 备注Java

模板上改动一些即可。解题思路是 输出在字典中有相同的前缀+1个字符来唯一识别这个单词。

字典树(前缀树)的模板:

https://blog.csdn.net/u011787119/article/details/46991691

代码如下:

#include

#include

#include

using namespace std;

const int maxn = 26;

char s[1010][30];

struct Trie

{

Trie *Next[maxn];

int cnt;

Trie()

{

cnt = 1;

memset(Next, NULL, sizeof(Next));

}

}*root;

void insert(char *str)

{

int len = strlen(str);

Trie *p = root, *q;

for (int i = 0; i < len; i++)

{

int id = str[i] - ‘a’;

if (p->Next[id] == NULL)

{

q = new Trie();

p->Next[id] = q;

p = p->Next[id];

}

else

{

p=p->Next[id];

(p->cnt)++;

}

}

}

void find(char *str)

{

int len = strlen(str);

Trie *p = root;

for (int i = 0; i < len; i++)

{

int id = str[i] - ‘a’;

p = p->Next[id];

if (p->cnt > 1) ///输出这些字符串相同的前缀

{

printf(“%c”, str[i]);

}

else ///当p->cnt==1时,多输出一个字符来唯一的标识这个字符串(本题的关键)

写在最后

学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!

最后再分享的一些BATJ等大厂20、21年的面试题,把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。

蚂蚁金服三面直击面试官的Redis三连,Redis面试复习大纲在手,不慌

Mybatis面试专题

蚂蚁金服三面直击面试官的Redis三连,Redis面试复习大纲在手,不慌

MySQL面试专题

蚂蚁金服三面直击面试官的Redis三连,Redis面试复习大纲在手,不慌

并发编程面试专题

形式给大家展示一部分。

[外链图片转存中…(img-kujBVM1I-1716342566148)]

Mybatis面试专题

[外链图片转存中…(img-UbEZLrHl-1716342566149)]

MySQL面试专题

[外链图片转存中…(img-O0vTDPmx-1716342566150)]

并发编程面试专题

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值