leetcode:Repeated DNA Sequences
2016-03-13 17:32
447 查看
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,
Subscribe to see which companies asked this question
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"].
Subscribe to see which companies asked this question
class Solution { private: int char2val(char c) { switch (c) { case 'A': return 0; case 'C': return 1; case 'G': return 2; case 'T': return 3; } } public: vector<string> findRepeatedDnaSequences(string s) { vector<string> ans; if (s.size() <= 10) return ans; //map<int, int> hashTable; char hashTable[1048576] = {0}; int len = s.size(); int hashValue = 0; int mask = (1<<20)-1; for (int i=0; i<9; i++) hashValue = (hashValue << 2) | char2val(s[i]); for (int i=9; i<len; i++) { hashValue = (hashValue << 2 | char2val(s[i])) & mask; if (hashTable[hashValue]++ == 1) { ans.push_back(s.substr(i-9, 10)); } } return ans; /* char hashMap[1048576] = {0}; vector<string> ans; int len = s.size(),hashNum = 0; if (len < 11) return ans; for (int i = 0;i < 9;++i) hashNum = hashNum << 2 | (s[i] - 'A' + 1) % 5; for (int i = 9;i < len;++i) if (hashMap[hashNum = (hashNum << 2 | (s[i] - 'A' + 1) % 5) & 0xfffff]++ == 1) ans.push_back(s.substr(i-9,10)); return ans; */ } };
相关文章推荐
- PowerBuilder创建和链接数据库
- String,StringBuffer与StringBuilder的区别及应用场景
- SQLServer中有五种约束,Primary Key约束、Foreign Key约束、Unique约束、Default约束和Check约束,今天使用SQL Server2008来演示下这几种约束的
- [POJ 2533]Longest Ordered Subsequence[LIS]
- UIImagePickerController选择图片发送后旋转90度的问题
- 根据UIScrollView的contentOffset值精确控制动画
- 【U3D日记-2016年3月12日】NGUI初入——基本控件
- STL之双端队列(deque)
- GUI
- 关于YES、NO和TRUE、FLASE的区别
- 74.Interesting Sequence(有趣的数列)(拓扑排序)
- 74.Interesting Sequence(有趣的数列)(拓扑排序)
- SEQUENCE自增列
- 设置GUI中Label的字体大小
- 用while(true)和continue、break来实现在一个大循环里switch
- STL list和deque
- NSThread、NSOperation/NSOperationQueue、GCD多线程
- Deep learning:四十四(Pylearn2中的Quick-start例子)
- poj-2478 Farey Sequence(dp,欧拉函数)
- iOS8新特性之基于地理位置的消息通知UILocalNotification