- 重复的DNA序列
Sql中突然出现了一题Java,应该很鬼畜吧,就给他做了。开始做本题目的时候没什么思路,后来看评论区才了解,感谢评论区的大佬,发此篇博客只是记录学习成果。
思路:由于Set中不存放重复的元素,所以可以使用Set。通过判断HashSet的存在元素来进行区分。本题的题意是解决任意长度相同的问题,本题中以定长10来解决。具体题目如下。
测试代码如下:
package com.leecode.Study;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
public class Dna {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> s = findRepeatedDnaSequences("AAAAAAAAAAAAA");
for(String a:s) {
System.out.println(a);
}
}
public static List<String> findRepeatedDnaSequences(String s) {
int len = s.length();
Set<String> aHashSet = new HashSet<String>();
Set<String> res = new HashSet<String>();
// if (s.substring(0, len / 2).equals(s.substring(len / 2,len))) {
// res.add(s);
// System.out.println(res.toString());
// return new ArrayList<>(res);
// }
for (int i = 0; i <= len - 10; i++) {
String tempString = s.substring(i,i + 10);
if (aHashSet.contains(tempString)) {
res.add(tempString);
}else {
aHashSet.add(tempString);
}
}
return new ArrayList<>(res);
}
}