[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[0];SuffixTreeNode *child;if (children.count(value)) {child = children[value];} else {child = new SuffixTreeNode();children[value] = child;}string remainder = s.substr(1);child->insertString(remainder, idx);}}vector<int> search(string s) {if (s.empty()) return indexes;char first = s[0];if (children.count(first)) {string remainder = s.substr(1);return children[first]->search(remainder);}return {};} };class SuffixTree { public:SuffixTreeNode *root = new SuffixTreeNode();SuffixTree(string s) {for (int i = 0; i < s.size(); ++i) {string suffix = s.substr(i);root->insertString(suffix, i);}}vector<int> search(string s) {return root->search(s);} };
本文转自博客园Grandyang的博客,原文链接: 搜索字符串[CareerCup] 18.8 Search String,如需转载请自行联系原博主。
[CareerCup] 18.8 Search String 搜索字符串相关推荐
- 获得Google搜索字符串中的关键字
/// <summary> /// 获得Google搜索字符串中的关键字 /// </summary> /// <returns></return ...
- java 字符串查找程序_java-如何在JAR文件中搜索字符串
java-如何在JAR文件中搜索字符串 我的应用程序基于Java EE构建. 我在此应用程序中大约有50个罐子. 是否可以搜索特定的关键字(实际上我想搜索关键字BEGIN REQUEST)? user ...
- 0717 抽象类/接口/异常/==-equals()/搜索字符串/包装类型(统计字符数)/hashCode()/StringBuffer/pingSQL/2018年美式日历
抽象类与接口 什么是抽象类? 有一些类没有必要实例化,实例化没有意义,它可以封装通用 的业务代码 Animal -- 没有必要实例化 Dog Cat Fish ... 抽象 ...
- C++words search单词搜索的算法实现(附完整源码)
C++words search单词搜索的算法实现 C++words search单词搜索的算法实现完整源码(定义,实现,main函数测试) C++words search单词搜索的算法实现完整源码(定 ...
- string型字符串
1::char和string比较 #include <iostream> #include <string> using namespace std; int main() { ...
- java用 拼接字符串的原理_Java String 拼接字符串原理详解
首先来一道思考题: String str1 = "111111"; String str2 = "222222"; String str = str1 + st ...
- 程序员面试金典——18.7最长合成字符串
程序员面试金典--18.7最长合成字符串 参考网址:https://www.nowcoder.com/profile/2896594/codeBookDetail?submissionId=13543 ...
- String类字符串习题作业
编写程序将 "jdk" 全部变为大写,并输出到屏幕,截取子串"DK" 并输出到屏幕 public class Test4 {public static void ...
- 身份证号码是18位数字字符构成的字符串,输入一个身份证号码判断该号码拥有者的性别
/*身份证号码是18位数字字符构成的字符串,输入一个身份证号码判断该号码拥有者的性别 提示:第17为数字字符奇数为男,偶数为女 */ #include #include #include #inclu ...
最新文章
- 舒工给您娓娓道来:2019-nCoV,教室布局筛查追溯系统算法解密!
- es6 原生构造函数的继承
- ORACLE RMAN备份--差异增量与累积增量的策略实例图
- 计算机的各种配件知识,菜鸟必读:DIY装机需要知道的一些配件小知识
- win7系统声卡驱动安装失败怎么办--win7w.com
- dede 表单必填_dede自定义表单“必填项”设置方法
- centos检测不到磁盘_安装centos6.3显示找不到硬盘怎么办
- datamap excel插件_Excel地图插件 DataMap
- 【Docker 那些事儿】如何安全地停止、删除容器
- js html显示emoji表情,js emoji表情长度判断
- 深度学习 基础硬件CPU GPU知识笔记
- pc端双六边形重叠效果(带边框的六边形)
- 「CF1463A」暗黑地牢
- 如何获取OpenAI API Key
- 广东2022年养老金计发基数为8682元,人们都能领这样多养老金吗
- Ubuntu 网络管理
- html精灵图坐标如何确定,CSS实现精灵图与字体图标
- java项目开发实例基于SSM的公司员工管理系统含论文+开题报告
- linux没有ifconfig命令
- lightroom使用小结一 导入和优化设置
热门文章
- play 1.2.4的action执行前后的加载逻辑
- [Objective C] 获取类和对象的运行时状态
- linux高亮 查日志
- 驱动重构SDN/NFV奠定未来网络基石
- BZOJ 2555: SubString [后缀自动机 LCT]
- 轻松精通数据库管理之道——运维巡检之六(作业运行情况)
- Android应用内存泄漏的定位、分析与解决策略
- UVa 10945 - Mother bear
- libqrencode 3.4.3 发布,二维码的C解析库
- 2013-我的前事今生(完结篇)