[leedcode 187] Repeated DNA Sequences
2015-08-02 23:33
253 查看
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,
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"].
public class Solution { public List<String> findRepeatedDnaSequences(String s) { //因为只有4个字母,所以可以创建自己的hashkey, 每两个BITS, 对应一个 incoming character. 超过20bit 即10个字符时, 只保留20bits. Map<Character,Integer> map=new HashMap<Character,Integer>(); map.put('A',0); map.put('C',1); map.put('G',2); map.put('T',3); List<String> res=new ArrayList<String>(); int hash=0; Set<Integer> set=new HashSet<Integer>(); for(int i=0;i<s.length();i++){ char c=s.charAt(i); if(i<9){ hash=(hash<<2)+map.get(c); }else{ hash=(hash<<2)+map.get(c); hash&=(1<<20)-1; if(set.contains(hash)){ if(!res.contains(s.substring(i-9,i+1))) res.add(s.substring(i-9,i+1)); }else{ set.add(hash); } } } return res; } }
相关文章推荐
- leetcode 63: Unique Paths II
- iOS开发——UI进阶篇(十三)UITabBarController简单使用,qq主流框架
- hdu 5312 Sequence
- php图像函数 imagecreatetruecolor()和imagecreate()的区别
- 关于Android Notification.Builder不显示通知的问题
- iOS学习笔记5-GCDAsyncUdpSocket中的dispatch_queue_set_specific
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- Android多线程中UI线程和其他线程进行交互的几种方法小结
- 浅谈UIViewController生命周期
- Frequentist和Bayesian的差别
- UVA 11235 Frequent values (RMQ)
- UE4风化和老化的影响
- 从外围了解UE4
- iOS 9 新增UIStackView
- UE4 框架
- HDU4027——线段树成段更新——Can you answer these queries?
- protues与keil4联调
- iOS开发——UI进阶篇(十二)事件处理,触摸事件,UITouch,UIEvent,响应者链条,手势识别
- UE4制作插件的插件神器pluginCreator
- UE4在VS2013中各个编译配置代表意义