首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
有一个词典,包含N个英文单词,现在任意给一个字符串,设计算法
[问答题]
有一个词典,包含N个英文单词,现在任意给一个字符串,设计算法找出包含这个字符串的所有英文单词
添加笔记
求解答(18)
邀请回答
收藏(123)
分享
纠错
9个回答
添加回答
2
HelloWorldn
这道题完完全全就是ac自动机要解决的问题。所以,这道题的标签不应该是大数据。
发表于 2016-12-04 19:19:33
回复(1)
1
从小就比较厉害
public class 英语词典 {
public static void m1(){
String[] dictionary={"consistent","complie","contact","cure"};
String str="e";
String[] s=getWords(dictionary,str);
for(String i:s){
if(null!=i){
System.out.println(i);
}
}
}
public static String[] getWords(String[] s,String str){
String[] s1=new String[s.length];
int j=0;
for(int i=0;i<s.length;i++){
if(isSubString(s[i],str)){
s1[j]=s[i];
j++;
}
}
return s1;
}
public static boolean isSubString(String str1,String str2){
boolean isSub=false;
StringBuilder str=new StringBuilder();
for(int i=0;i<str1.length()-str2.length()+1;i++){
str.append(str1.substring(i, i+str2.length()));
if(str.toString().equals(str2))isSub=true;
str.delete(0, str.length());
}
return isSub;
}
public static void main(String...args){
m1();
}
}
发表于 2015-05-12 16:54:08
回复(0)
1
陈木木
一个可行的思路:给输入字符串,利用字母建立倒排索引,索引中存储该字母 出现在哪个单词以及在单词中位置;查询时,利用倒排找到所有的单词,并求交集并且位置要连续
编辑于 2015-05-18 13:21:38
回复(0)
0
晚安丶胖不啦叽
倒排索引。
发表于 2017-08-21 22:17:51
回复(0)
0
老子是帮主
找出包含这个字符串的所有英文单词?感觉描述不大准确呢。。。
发表于 2017-08-08 19:35:02
回复(0)
0
lixinfeng
建立所有单词的后缀树
发表于 2016-09-17 15:17:03
回复(1)
0
牛客323319号
一个思路是先讲N个单词存进map,然后再降字符串中所有单词存进map,若次数大于1则输出
发表于 2016-09-03 23:42:29
回复(0)
0
helloworld10086
这题也可以利用ac自动机求解
发表于 2015-10-13 22:41:15
回复(1)
0
指上弹兵赵小括
利用key-value
key是单词的字典顺序排序
value是含有这些字母的单词
对于给定字符串str,先进行字典排序,然后找到对应的value就可以了。
貌似时间复杂度和空间复杂度不太好。
发表于 2015-08-22 09:41:40
回复(1)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
高级结构
上传者:
陈木木
难度:
9条回答
123收藏
13686浏览
热门推荐
相关试题
Disjoint-set data...
网易
高级结构
评论
(1)
编程题 ,按照要求创建Java 应...
Java
评论
(1)
微型计算机有三种总线,他们分别是数...
编程基础
评论
(1)
计算机系统中用于管理硬件和软件资源...
编程基础
评论
(1)
说出3个获取用户需求的方法并简述其...
用户研究
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题