博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
187. Repeated DNA Sequences
阅读量:4260 次
发布时间:2019-05-26

本文共 1690 字,大约阅读时间需要 5 分钟。

All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: “ACGAATTCCG”. When studying DNA, it is sometimes useful to identify repeated sequences within the DNA.

Write a function to find all the 10-letter-long sequences (substrings) that occur more than once in a DNA molecule.

For example,

Given s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT",Return:["AAAAACCCCC", "CCCCCAAAAA"].

先献出自己的菜鸡想法,利用一个map存储每10个子元素组成的字串,并++,最后在map中找出出现次数大于1的字串;

vector
findRepeatedDnaSequences(string s) { if (s.size() < 10)return vector
{}; unordered_map
temp; vector
res; int len = s.size(); for (int i = 0; i <= len - 10; i++){ temp[s.substr(i, 10)]++; } for (auto x : temp){ if (x.second > 1)res.push_back(x.first); } return res;}

写完之后自己都感觉的弱鸡的不行,这样带来的空间复杂度可能会很大,但还好时间复杂度依旧是O(N),不过还是不理想;

思路2:LeetCode上参考的代码,主要运用了位操作,其实也没有什么太过于神奇的地方,但是空间复杂度明显下降。

int char2val(char c){    switch (c){    case 'A':return 0;    case 'C':return 1;    case 'G':return 2;    case 'T':return 3;    default:return 0;    }}vector
findRepeatedDnaSequences(string s) { if (s.size() < 10)return vector
{}; vector
res; bitset<1 << 20> s1, s2; int mask = (1 << 20) - 1; int val = 0; for (int i = 0; i < 10; i++){ val = (val << 2) | char2val(s[i]); } s1.set(val); for (int i = 10; i < s.size(); i++){ val = ((val << 2) & mask) | char2val(s[i]); if (s2[val])continue; if (s1[val]){ res.push_back(s.substr(i - 10 + 1, 10)); s2.set(val); } else{ s1.set(val); } } return res;}

转载地址:http://atxei.baihongyu.com/

你可能感兴趣的文章
#####@@@#好好好好#####最全知识图谱介绍:关键技术、开放数据集、应用案例汇总
查看>>
MxNet使用总览
查看>>
DL4NLP —— seq2seq+attention机制的应用:文档自动摘要(Automatic Text Summarization)
查看>>
QA问答系统中的深度学习技术实现
查看>>
NLP专题论文解读:从Chatbot、NER到QA系统...
查看>>
端到端的TTS深度学习模型tacotron(中文语音合成)
查看>>
神经网络在关系抽取中的应用
查看>>
大规模知识图谱的构建、推理及应用
查看>>
揭秘 DeepMind 的关系推理网络
查看>>
概率图模型(PGM)模式推断与概率图流
查看>>
MySQL中REGEXP正则表达式使用大全
查看>>
ArangoDB、Neo4j、OrientDB单机性能比较
查看>>
MFCC(Mel 倒谱系数)
查看>>
python2代码批量转为python3代码
查看>>
贝叶斯优化: 一种更好的超参数调优方式
查看>>
Tensorflow 多任务学习 概念介绍
查看>>
Keras 多任务实现,Multi Loss #########Keras Xception Multi loss 细粒度图像分类
查看>>
#####好好好####从Google Visor到Microsoft NNI再到Advisor调参服务接口发展史
查看>>
tensorflow中的共享变量(sharing variables) 最佳方式variable_scope()命名空间来完成
查看>>
深度增强学习综述
查看>>