Leetcode 187. Repeated DNA Sequences[medium]
来源:互联网 发布:手机淘宝在哪领优惠券 编辑:程序博客网 时间:2024/06/04 12:31
题目:
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”].
先吐槽一下,在leetcode上做题真的是很烦,在内存上各种做文章,感觉真的很没意思。
吐槽完毕。
这个题因为一共只有4中字母,所以可以用2位二进制位表示,所以10个字母总共20个二进制位,可以直接用数组存储,判重。
本来一个int型vis数组就可以搞定,可是leetcode显示MLE。所以就加了一个ck数组辅助vis进行记录。
class Solution {public: bool vis[(1 << 20) - 1]; bool ck[(1 << 20) - 1]; vector<string> findRepeatedDnaSequences(string s) { map<char, int> mp; mp['A'] = 0; mp['T'] = 1; mp['C'] = 2; mp['G'] = 3; memset(vis, 0, sizeof vis); memset(ck, 0, sizeof ck); int mask = (1 << 20) - 1; vector<string> ans; int bc = 0; if (s.length() < 10) return ans; for (int i = 0; i < 10; i++) { bc = (bc << 2) | mp[s[i]]; } vis[bc]++; for (int i = 10; i < s.length(); i++) { bc = ((bc << 2) & mask) | mp[s[i]]; if (vis[bc]) { if (!ck[bc]) { tostr(bc, ans); ck[bc] = true; } } else vis[bc] = true; } return ans; } void tostr(int x, vector<string>& ans) { string str; int y; for (int i = 0; i < 10; i++) { y = x & 3; x >>= 2; if (y == 0) str.push_back('A'); else if (y == 1) str.push_back('T'); else if (y == 2) str.push_back('C'); else str.push_back('G'); } for (int i = 0; i < str.length() / 2; i++) { swap(str[i], str[str.length() - i - 1]); } ans.push_back(str); }};
0 0
- Leetcode 187. Repeated DNA Sequences (Medium) (cpp)
- Leetcode 187. Repeated DNA Sequences[medium]
- 187. Repeated DNA Sequences Medium
- [Leetcode 187, medium] Repeated DNA Sequences
- [leetcode] 187.Repeated DNA Sequences
- Leetcode-187.Repeated DNA Sequences
- Leetcode 187. Repeated DNA Sequences
- Leetcode 187. Repeated DNA Sequences
- [leetcode] 187. Repeated DNA Sequences
- 187. Repeated DNA Sequences LeetCode
- leetcode 187. Repeated DNA Sequences
- LeetCode 187. Repeated DNA Sequences
- LeetCode *** 187. Repeated DNA Sequences
- leetcode.187. Repeated DNA Sequences
- LeetCode 187. Repeated DNA Sequences
- LeetCode-187.Repeated DNA Sequences
- [leetcode] 187. Repeated DNA Sequences
- [LeetCode] 187. Repeated DNA Sequences
- CSS3高级特性之径向渐变
- jQuery即点即改
- sql中ROW_NUMBER函数的理解
- POJ-3349 简单哈希表的应用
- iOS分类中通过runtime添加动态属性
- Leetcode 187. Repeated DNA Sequences[medium]
- 新手Centos7安装mysql,并使用libzdb数据库链接池连接数据库
- Could not publish server configuration for Tomcat v7.0 Server at localhost. Multiple Contexts have a
- LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- div隐藏时jquery outerHeight(true);值有问题
- 项目中并发下单的问题怎么解决?
- ajax实现页面异步删除
- macos/ios 跨平台宏定义
- Linux 进程调度策略参考博文