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
========================================================================
这道题的题意是 输出最短的前缀唯一地(没有歧义)标识这个单词。字典树的入门题,只需要在原来的
需要文中资料的朋友,可以加我\/信获取: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(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。
Mybatis面试专题
MySQL面试专题
并发编程面试专题
形式给大家展示一部分。
[外链图片转存中…(img-kujBVM1I-1716342566148)]
Mybatis面试专题
[外链图片转存中…(img-UbEZLrHl-1716342566149)]
MySQL面试专题
[外链图片转存中…(img-O0vTDPmx-1716342566150)]
并发编程面试专题