当前位置:网站首页>leetcode:187. 重复的DNA序列
leetcode:187. 重复的DNA序列
2022-08-03 16:05:00 【OceanStar的学习笔记】
题目来源
题目描述
class Solution {
public:
vector<string> findRepeatedDnaSequences(string s) {
}
};
题目解析
哈希表
我们可以用一个哈希表统计 ss 所有长度为 1010 的子串的出现次数,返回所有出现次数超过 1010 的子串。
代码实现时,可以一边遍历子串一边记录答案,为了不重复记录答案,我们只统计当前出现次数为 22 的子串。
class Solution {
const int L = 10;
public:
vector<string> findRepeatedDnaSequences(string s) {
vector<string> ans;
unordered_map<string, int> cnt;
int n = s.length();
for (int i = 0; i <= n - L; ++i) {
string sub = s.substr(i, L);
if (++cnt[sub] == 2) {
ans.push_back(sub);
}
}
return ans;
}
};
一定要用unordered_map,CPP的unordered_map就不需要再将字符串转hash值了
前缀树优化
class Solution {
struct Trie{
int cnt;
std::vector<Trie *> vec;
Trie(){
cnt = 0;
vec.resize(26);
}
};
bool buildTrie(std::string &s, int start, Trie * root){
Trie *node = root;
for (int i = start; i < start + 10; ++i) {
int c = s[i] - 'A';
if(node->vec[c] == nullptr){
node->vec[c] = new Trie();
}
node = node->vec[c];
}
bool flag = false;
node->cnt++;
if(node->cnt == 2){
flag = true;
}
return flag;
}
public:
vector<string> findRepeatedDnaSequences(string s) {
int N = s.size();
vector<string> ans;
Trie *root = new Trie();
for (int i = 0; i < N - 9; ++i) {
if(buildTrie(s, i, root)){
ans.push_back(s.substr(i, 10));
}
}
return ans;
}
};
边栏推荐
- 面了个腾讯35k出来的,他让我见识到什么叫精通MySQL调优
- [Unity Getting Started Plan] Basic Concepts (8) - Tile Map TileMap 01
- 【深度学习】今日bug(8月2)
- 产品以及研发团队有使用专业的办公软件,如禅道、蓝湖等,他们应该如何使用 Tita 系统?
- 泰山OFFICE技术讲座:段落边框的绘制难点在哪里?
- posgresql 到 es 报这个错误 ,啥意思
- leetcode-268.丢失的数字
- WordPress建站技术笔记
- How to get the 2 d space prior to ViT?UMA & Hong Kong institute of technology & ali SP - ViT, study for visual Transformer 2 d space prior knowledge!.
- 【Unity入门计划】基本概念(7)-Input Manager&Input类
猜你喜欢
随机推荐
DataGrip:非常好用的数据库工具,安装与使用教程,亮点介绍
MarkDown常用代码片段和工具
Research on power flow in DC microgrid based on Newton's method (Matlab code implementation)
MPLS的wpn实验
如何选择合适的损失函数,请看......
带你了解什么是 Web3.0
83. Remove Duplicates from Sorted List
用户侧有什么办法可以自检hologres单表占用内存具体是元数据、计算、缓存的使用情况?
How to analyze the weekly activity rate?
【Unity入门计划】基本概念(8)-瓦片地图 TileMap 01
移动应用出海,你的“网络优化”拖后腿了吗?
EA 改口,称单人游戏是产品组合中“非常重要的一部分”
Detailed ReentrantLock
【Unity入门计划】基本概念(7)-Input Manager&Input类
Awesome!Coroutines are finally here!Thread is about to be in the past
人脸识别损失函数的汇总 | Pytorch版本实现
Leetcode76. Minimal Covering Substring
Introduction to spark learning - 1
5 v 8.4 v1A charging current charging management IC
元宇宙系列--Value creation in the metaverse