Leetcode Repeated DNA Sequences
2016-06-10 22:43
309 查看
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,
Difficulty: Medium
Solution: Two naive solutions using hashtable and hashmap. They are almost the same thing. The best solution is using bitmap:
Link: http://www.programcreek.com/2014/03/leetcode-repeated-dna-sequences-java/
HashMap:
public class Solution {
public List<String> findRepeatedDnaSequences(String s) {
HashMap<String, Integer> ht = new HashMap<String, Integer>();
List<String> res = new ArrayList<String>();
int len = s.length();
for(int i = 0; i <= len - 10; i++){
String temp = s.substring(i, i + 10);
if(!ht.containsKey(temp)){
ht.put(temp, 1);
}
else{
ht.put(temp, ht.get(temp) + 1);
}
}
for (Map.Entry<String, Integer> entry : ht.entrySet()) {
String key = entry.getKey();
int value = entry.getValue();
if(value > 1)
res.add(key);
}
return res;
}
}
Hashtable:
import java.util.Hashtable;
import java.util.Enumeration;
public class Solution {
public List<String> findRepeatedDnaSequences(String s) {
Hashtable<String, Integer> ht = new Hashtable<String, Integer>();
List<String> res = new ArrayList<String>();
int len = s.length();
for(int i = 0; i <= len - 10; i++){
String temp = s.substring(i, i + 10);
if(!ht.containsKey(temp)){
ht.put(temp, 1);
}
else{
ht.put(temp, ht.get(temp) + 1);
}
}
Enumeration<String> enumKey = ht.keys();
while(enumKey.hasMoreElements()) {
String key = enumKey.nextElement();
if(ht.get(key) > 1)
res.add(key);
}
return res;
}
}
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"].
Difficulty: Medium
Solution: Two naive solutions using hashtable and hashmap. They are almost the same thing. The best solution is using bitmap:
Link: http://www.programcreek.com/2014/03/leetcode-repeated-dna-sequences-java/
HashMap:
public class Solution {
public List<String> findRepeatedDnaSequences(String s) {
HashMap<String, Integer> ht = new HashMap<String, Integer>();
List<String> res = new ArrayList<String>();
int len = s.length();
for(int i = 0; i <= len - 10; i++){
String temp = s.substring(i, i + 10);
if(!ht.containsKey(temp)){
ht.put(temp, 1);
}
else{
ht.put(temp, ht.get(temp) + 1);
}
}
for (Map.Entry<String, Integer> entry : ht.entrySet()) {
String key = entry.getKey();
int value = entry.getValue();
if(value > 1)
res.add(key);
}
return res;
}
}
Hashtable:
import java.util.Hashtable;
import java.util.Enumeration;
public class Solution {
public List<String> findRepeatedDnaSequences(String s) {
Hashtable<String, Integer> ht = new Hashtable<String, Integer>();
List<String> res = new ArrayList<String>();
int len = s.length();
for(int i = 0; i <= len - 10; i++){
String temp = s.substring(i, i + 10);
if(!ht.containsKey(temp)){
ht.put(temp, 1);
}
else{
ht.put(temp, ht.get(temp) + 1);
}
}
Enumeration<String> enumKey = ht.keys();
while(enumKey.hasMoreElements()) {
String key = enumKey.nextElement();
if(ht.get(key) > 1)
res.add(key);
}
return res;
}
}
相关文章推荐
- QT模态对话框用法(在UI文件中设置Widget背景图,这个图是一个带阴影边框的图片——酷)
- POJ 2524 Ubiquitous Religions (简单并查集,三种方式)
- java.util.AbstractStringBuilder源码分析
- QNetworkAccessManager跳转URL处理(使用QNetworkRequest::RedirectionTargetAttribute获得跳转URL)
- 跨平台生成GUID/UUID
- UITabBarController+UINavigationController+UIToolBar
- GUIDE D'IONIC [Français]
- GUI_POINT的坐标
- leetcode---Unique Paths---动规
- POJ 1947 Rebuilding Roads(树形DP)
- 响应式布局基本实现Media Query(媒介查询)
- 【Arduino官方教程第一辑】示例程序 6-1 读取ADXL3xx加速度计
- UITableViewCell中cell分割线不显示
- 【Leetcode】Longest Consecutive Sequence
- UITableView性能优化 以及动态计算cell高度 新方法
- [LeetCode][9]Palindrome Number解析与StringBuilder.reverse()源码实现 -Java实现
- Building Roads_poj2749_2-sat+二分
- duilib第四天 2016年6月10日
- Ten Important Differences between Bluetooth BR/EDR and Bluetooth Smart
- iOS安全编码指南 Secure Coding Guide -- 02 Types of Security Vulnerabilities 上