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

本文共 1701 字,大约阅读时间需要 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”].

  • 解题思路
    按照提示,采用Hash TableBit Manipulation来处理。
    备注:采用hash_map来做时,自己电脑上可以编译通过,但是LeetCode提示不存在hash_map对象。故改为使用map,但效率较低。
  • 实现代码
/*************************************************************    *  @Author   : 楚兴    *  @Date     : 2015/2/8 11:07    *  @Status   : Accepted    *  @Runtime  : 238 ms*************************************************************/#include 
#include
#include
#include
using namespace std;class Solution {public: vector
findRepeatedDnaSequences(string s) { vector
result; if (s.length() <= 10) { return result; } map
mymap; int i = 0; int cursor = 0; while (i < 9) { cursor = cursor << 3 | s.at(i) & 7; //优先级顺序<<、&、| i++; } int mask = 0x7FFFFFF; while (i < s.length()) { //cursor & mask得到27bit cursor = (cursor & mask) << 3 | s.at(i) & 7; i++; auto it = mymap.find(cursor); if (it != mymap.end()) { int count = (*it).second; if (count == 1) { result.push_back(s.substr(i - 10, 10)); } get<1>(*it) = count + 1; //更改second的值 } else { mymap.insert(make_pair(cursor,1)); } } return result; }};int main(){ Solution s; string str = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"; vector
result = s.findRepeatedDnaSequences(str); for (auto it = result.begin(); it != result.end(); it++) { cout<<(*it).c_str()<

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

你可能感兴趣的文章
mysql 创建日期列之timestamp
查看>>
VMM系列之使用VMM服务器构建 Hyper-V主机(4)
查看>>
详测 Generics Collections TList (7): Items、Contains
查看>>
配置FTP服务器(2) 本地用户下载和上传
查看>>
多线程编程(11) - 多线程同步之 Mutex (互斥对象)[续]
查看>>
【Java每日一题】20161214
查看>>
requireJs 模块化简陋版本
查看>>
我的友情链接
查看>>
How to upgrade vim to version 8 on CentOS 7
查看>>
xcode pod 报import 找不到 pods的支持问题解决方法之一
查看>>
nginx配置让任何文件在浏览器中显示文本text/plain
查看>>
思科路由器×××配置-- 动态 site-to-site ×××(上)
查看>>
Visual Studio统计有效代码行数
查看>>
Qt连接Oracle数据库常见问题
查看>>
45个实用的JavaScript技巧、窍门和最佳实践
查看>>
sqlserver 2005 列字符串拼接
查看>>
用面向接口编程思想看找对象
查看>>
TWaver GIS在电信中的使用
查看>>
MySQL5.7使用Notifier启动、停止服务时出现的问题
查看>>
今天用java弄个json数据交换接口,个人感觉这样实现省事实力。
查看>>