Repeated DNA Sequences
来源:互联网 发布:青岛软件开发公司 编辑:程序博客网 时间:2024/05/19 07:10
原文地址:http://blog.csdn.net/u013325815/article/details/43601367
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"].
Have you met this question in a real interview?
字典+位运算
//A=0x41, C=0x43, G=0x47, T=0x54
//A=0101, C=0103, G=0107, T=0124
//A,C,G,T最后3bit不同,即与mask“0111”作与运算可唯一标识ACGT。
- public class Solution {
- public List<String> findRepeatedDnaSequences(String s) {
- List<String> list = new ArrayList<String>();
- if(s == null || s.length()<=10) return list;
- int mask = 0x7FFFFFF;
- int i=0;
- int cur = 0;
- HashMap<Integer,Integer> hashmap = new HashMap<Integer,Integer>();
- while(i<9){
- cur = ((cur<<3) | s.charAt(i) & 7);
- i++;
- }
- while(i<s.length()){
- cur = ((cur & mask)<<3 | s.charAt(i) & 7);
- i++;
- if(hashmap.containsKey(cur)){
- int count = hashmap.get(cur);
- if(count == 1){
- list.add(s.substring(i-10,i));
- }
- hashmap.put(cur, count+1);
- }else{
- hashmap.put(cur,1);
- }
- }
- return list;
- }
- }
0 0
- Leetcode Repeated DNA Sequences
- Repeated DNA Sequences [leetcode]
- Repeated DNA Sequences
- Repeated DNA Sequences
- [LeetCode] Repeated DNA Sequences
- Repeated DNA Sequences
- Leetcode Repeated DNA Sequences
- Leetcode:Repeated DNA Sequences
- Leetcode: Repeated DNA Sequences
- Repeated DNA Sequences (Java)
- Repeated DNA Sequences
- LeetCode: Repeated DNA Sequences
- LeetCode: Repeated DNA Sequences
- LeetCode Repeated DNA Sequences
- LeetCode--Repeated DNA Sequences
- [LeetCode]Repeated DNA Sequences
- Repeated DNA Sequences
- [Leetcode]Repeated DNA Sequences
- Android5.0 水波控件RippleDrawable简析
- 基于MT6752/32平台 Android L版本驱动移植步骤
- 黑马程序员------Foundation框架------结构体
- Myeclipse8.5 反编译插件 jad 安装
- String StringBuffer 和StringBuilder的比较
- Repeated DNA Sequences
- if语句和goto语句求1到100的和
- 用c#开发安卓程序 (xamarin.android)
- SIFT matlab源代码解析
- JSOP实现跨域
- 用c#开发安卓程序 (xamarin.android)系列之一
- Tomcat 架构 (一)
- 黑马程序员------Foundation框架------补充
- 怎样成为架构师