[CareerCup] 18.8 Search String 搜索字符串
18.8 Given a string s and an array of smaller strings T, design a method to search s for each small string in T.
这道题给我们一个字符串s,和一个字符串数组T,让我们找T中的每一个小字符串在s中出现的位置,这道题很适合用后缀树Suffix Tree来做,LeetCode中有几道关于前缀树(Prefix Tree, Trie)的题,Implement Trie (Prefix Tree),Word Search II,和 Add and Search Word - Data structure design 。前缀树和后缀树比较相似,都是很重要的数据结构,在解决特定问题时非常有效,具体讲解请参见这个帖子。参见代码如下:
class SuffixTreeNode {
public:
unordered_map<char, SuffixTreeNode*> children;
char value;
vector<int> indexes; void insertString(string s, int idx) {
indexes.push_back(idx);
if (!s.empty()) {
value = s[];
SuffixTreeNode *child;
if (children.count(value)) {
child = children[value];
} else {
child = new SuffixTreeNode();
children[value] = child;
}
string remainder = s.substr();
child->insertString(remainder, idx);
}
} vector<int> search(string s) {
if (s.empty()) return indexes;
char first = s[];
if (children.count(first)) {
string remainder = s.substr();
return children[first]->search(remainder);
}
return {};
}
}; class SuffixTree {
public:
SuffixTreeNode *root = new SuffixTreeNode(); SuffixTree(string s) {
for (int i = ; i < s.size(); ++i) {
string suffix = s.substr(i);
root->insertString(suffix, i);
}
} vector<int> search(string s) {
return root->search(s);
}
};
类似题目:
Add and Search Word - Data structure design
参考资料:
http://blog.csdn.net/v_july_v/article/details/6897097
[CareerCup] 18.8 Search String 搜索字符串的更多相关文章
- [CareerCup] 1.2 Reverse String 翻转字符串
1.2 Implement a function void reverse(char *str) in C or C++ which reverses a null-terminated string ...
- [CareerCup] 1.5 Compress String 压缩字符串
1.5 Implement a method to perform basic string compression using the counts of repeated characters. ...
- C语言打印记事本内搜索字符串所在行信息
本程序采用C语言编写,使用方法: 1.双击“甲骨文字符串查询作品.exe”运行程序; 2.运行前请确保此可执行程序目录下有1.txt文件. 3.根据提示输入一个字符串,程序将显示存在所搜索字符串的所有 ...
- 18 已知下面的字符串是通过RANDOM随机数变量md5sum|cut-c 1-8截取后的结果
面试题18:破解RANDOM随机数案例 已知下面的字符串是通过RANDOM随机数变量md5sum后,再截取一部分连续字符串的结果,请破解这些字符串对应的使用md5sum处理前的RANDOM对应的数字? ...
- JavaScript String(字符串对象)
String 对字符串的支持 String.charAt( n ) 返回字符串中的第n个字符 n 是下标 String.charCodeAt( ) 返回字符串中的第n个字符的代码 String.con ...
- C# 数据类型之 String(字符串)
Ø 简介 在开发中最常见的数据类型就是 String 类型,即字符串类型.为什么要单独讨论下这个类型,是因为:它是系统内置的基础数据类型:它的使用频率非常高:它是一个特殊的引用类型.其实大家都会使用 ...
- ABAP search help (搜索帮助) 几种种方法
ABAP search help (搜索帮助) 几种种方法 域范围 ABAP 的搜索帮助有很多种方法,掌握下面的几种基本差不多了 *&------------------------- ...
- 由一篇吐槽对String空字符串判断的文章所引发的碎碎念
一.起因 最近有篇关于String空字符串判断的文章火了,老是看到这篇文章,既然如此我也只好认真看了下:程序员晒出一段代码引来无数网友狂喷!网友:你就活该当码农! 我也觉得这段代码写的不怎么的,首先程 ...
- c# String.IndexOf 方法 string查找字符串
c# String.IndexOf 方法 (value, [startIndex], [count]) 报告指定字符在此实例中的第一个匹配项的索引.搜索从指定字符位置开始,并检查指定数量的字符位置. ...
随机推荐
- JAVA的容器---List,Map,Set (转)
JAVA的容器---List,Map,Set Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashM ...
- 在Salesforce中创建Schedule的Job去定时触发对应的Class
在Salesforce中也存在着Job的概念,当然了我们可以创建Schedule的Job去定时触发对应的Class,来完成我们所需要定时处理的功能,比如:定时同步数据. 具体处理步骤如下所示: 1): ...
- javase基础笔记2——数据类型和面向对象
API:Application program interface 程序调用一个方法去实现一个功能 正则表达式:regex 用来匹配的 javaEE里边有三大框架 SSH struts spring ...
- UI中 frame 与 transform的用法与总结
在iOS中,我们是不可以直接访问控件中frame的结构体的成员的,因此我们需要分三步来改变一个UI控件的位置,大小 一.frame用法 frame的结构体类型为: struct CGRect { CG ...
- html table之 全选,全不选
就是这个小功能让我和组长引发争端,就是这个小功能让我差点"被"辞职,就是这个自封装的js方法让我放下了对组长的敬畏之心,现在分享一下,其实也很简单,但是真的有这么简单吗? < ...
- strcmp函数使用总结
Action() { /********************************* * Author:旺仔 * object:strcmp * date:2015-12-09 * fuc:我输 ...
- 最值得学习的10个C语言开源项目
最好别下载最新版,因为代码量比较大,可以下载很早的版本 搜索词:开源 C Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我 ...
- 领域模型(domain model)&贫血模型(anaemic domain model)&充血模型(rich domain model)
领域模型是领域内的概念类或现实世界中对象的可视化表示,又称为概念模型或分析对象模型,它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系. 贫血模型是指使用的领域对象中只有s ...
- BSGS[bzoj2242][bzoj3122]
数论题. 操作一:直接快速幂就好了. 操作二:我用了exgcd,shy和lyz都喜欢欧拉函数...QAQ最后这块还写错了. 对于ax+by=gcd(a,b)的形式,我们可以把他们变成y'x+p'y=1 ...
- 餐厅点餐系统app第二天
队友: 郭志豪:http://www.cnblogs.com/gzh13692021053/ 杨子健:http://www.cnblogs.com/yzj666/ 刘森松:http://www.cnb ...